Skip to content

Commit

Permalink
Do not crash when the main activity is unavailable
Browse files Browse the repository at this point in the history
The React Native application context has a method for obtaining the current Android activity, but this sometimes returns null. We believe this happens due to a race condition between the Javascript engine and the native code, but we aren't completely sure. What we do know is that this situation happens in the wild, since it shows up in our Bugsnag reports.

The fix is the leave the BlurView native component uninitialized in these cases.This prevents it from rendering anything, but that's preferable to crashing the whole app.
  • Loading branch information
swansontec authored Sep 29, 2020
1 parent 79f338b commit bb8cfbd
Showing 1 changed file with 11 additions and 8 deletions.
19 changes: 11 additions & 8 deletions android/src/main/java/com/cmcewen/blurview/BlurViewManager.java
Original file line number Diff line number Diff line change
Expand Up @@ -32,14 +32,17 @@ class BlurViewManager extends ViewGroupManager<BlurView> {
@Override
public @Nonnull BlurView createViewInstance(@Nonnull ThemedReactContext ctx) {
BlurView blurView = new BlurView(ctx);
View decorView = Objects.requireNonNull(ctx.getCurrentActivity()).getWindow().getDecorView();
ViewGroup rootView = decorView.findViewById(android.R.id.content);
Drawable windowBackground = decorView.getBackground();
blurView.setupWith(rootView)
.setFrameClearDrawable(windowBackground)
.setBlurAlgorithm(new RenderScriptBlur(ctx))
.setBlurRadius(defaultRadius)
.setHasFixedTransformationMatrix(false);
Activity currentActivity = ctx.getCurrentActivity();
if (currentActivity != null) {
View decorView = currentActivity.getWindow().getDecorView();
ViewGroup rootView = decorView.findViewById(android.R.id.content);
Drawable windowBackground = decorView.getBackground();
blurView.setupWith(rootView)
.setFrameClearDrawable(windowBackground)
.setBlurAlgorithm(new RenderScriptBlur(ctx))
.setBlurRadius(defaultRadius)
.setHasFixedTransformationMatrix(false);
}
return blurView;
}

Expand Down

0 comments on commit bb8cfbd

Please sign in to comment.