Browse Source

Destroy navigation activity layouts on catalyst instance destroy (#3318)

Destroy navigation activity layouts on catalyst instance destroy

addresses #2331 & Microsoft/react-native-code-push#1144
Evan Ricketts 6 years ago
parent
commit
5e2b02ce62

+ 7
- 0
android/app/src/main/java/com/reactnativenavigation/bridge/NavigationReactModule.java View File

@@ -9,6 +9,7 @@ import com.facebook.react.bridge.ReactContextBaseJavaModule;
9 9
 import com.facebook.react.bridge.ReactMethod;
10 10
 import com.facebook.react.bridge.ReadableArray;
11 11
 import com.facebook.react.bridge.ReadableMap;
12
+import com.reactnativenavigation.controllers.NavigationActivity;
12 13
 import com.reactnativenavigation.controllers.NavigationCommandsHandler;
13 14
 import com.reactnativenavigation.params.ContextualMenuParams;
14 15
 import com.reactnativenavigation.params.FabParams;
@@ -53,6 +54,12 @@ public class NavigationReactModule extends ReactContextBaseJavaModule {
53 54
         return NAME;
54 55
     }
55 56
 
57
+    @Override
58
+    public void onCatalystInstanceDestroy() {
59
+        super.onCatalystInstanceDestroy();
60
+        NavigationActivity.onCatalystInstanceDestroy();
61
+    }
62
+
56 63
     @ReactMethod
57 64
     public void startApp(final ReadableMap params, final @Nullable Promise promise) {
58 65
         NavigationCommandsHandler.startApp(BundleConverter.toBundle(params), promise);

+ 14
- 0
android/app/src/main/java/com/reactnativenavigation/controllers/NavigationActivity.java View File

@@ -499,6 +499,20 @@ public class NavigationActivity extends AppCompatActivity implements DefaultHard
499 499
         NavigationActivity.startAppPromise = promise;
500 500
     }
501 501
 
502
+    public static void onCatalystInstanceDestroy() {
503
+        if (currentActivity == null) {
504
+            return;
505
+        }
506
+        currentActivity.runOnUiThread(new Runnable() {
507
+            @Override
508
+            public void run() {
509
+                if (currentActivity != null) {
510
+                    currentActivity.destroyLayouts();
511
+                }
512
+            }
513
+        });
514
+    }
515
+
502 516
     public Layout getLayout() {
503 517
         return layout;
504 518
     }