Browse Source

ReactContext initialized listener on NavigationApplication

Daniel Zlotin 8 years ago
parent
commit
0dcbe6877d

+ 9
- 0
android/app/src/main/java/com/reactnativenavigation/NavigationApplication.java View File

5
 import android.support.annotation.Nullable;
5
 import android.support.annotation.Nullable;
6
 
6
 
7
 import com.facebook.react.ReactPackage;
7
 import com.facebook.react.ReactPackage;
8
+import com.facebook.react.bridge.ReactContext;
8
 import com.facebook.react.bridge.WritableMap;
9
 import com.facebook.react.bridge.WritableMap;
9
 import com.reactnativenavigation.react.NavigationReactGateway;
10
 import com.reactnativenavigation.react.NavigationReactGateway;
10
 import com.reactnativenavigation.react.ReactGateway;
11
 import com.reactnativenavigation.react.ReactGateway;
56
 
57
 
57
     public abstract boolean isDebug();
58
     public abstract boolean isDebug();
58
 
59
 
60
+    /**
61
+     * override to listen to react initialization event
62
+     */
63
+    public void onReactInitialized(ReactContext reactContext) {
64
+        // nothing
65
+    }
66
+
59
     @Nullable
67
     @Nullable
60
     public abstract List<ReactPackage> createAdditionalReactPackages();
68
     public abstract List<ReactPackage> createAdditionalReactPackages();
61
 
69
 
87
         }
95
         }
88
         reactGateway.getReactEventEmitter().sendEvent(eventId, arguments);
96
         reactGateway.getReactEventEmitter().sendEvent(eventId, arguments);
89
     }
97
     }
98
+
90
 }
99
 }

+ 11
- 1
android/app/src/main/java/com/reactnativenavigation/react/NavigationReactGateway.java View File

16
 import java.util.ArrayList;
16
 import java.util.ArrayList;
17
 import java.util.List;
17
 import java.util.List;
18
 
18
 
19
-public class NavigationReactGateway implements ReactGateway {
19
+public class NavigationReactGateway implements ReactGateway, ReactInstanceManager.ReactInstanceEventListener {
20
 
20
 
21
     private OnJsDevReloadListener onJsDevReloadListener;
21
     private OnJsDevReloadListener onJsDevReloadListener;
22
     private ReactInstanceManager reactInstanceManager;
22
     private ReactInstanceManager reactInstanceManager;
26
         reactInstanceManager = createReactInstanceManager();
26
         reactInstanceManager = createReactInstanceManager();
27
     }
27
     }
28
 
28
 
29
+    @Override
29
     public void startReactContextOnceInBackgroundAndExecuteJS() {
30
     public void startReactContextOnceInBackgroundAndExecuteJS() {
30
         if (reactInstanceManager == null) {
31
         if (reactInstanceManager == null) {
31
             reactInstanceManager = createReactInstanceManager();
32
             reactInstanceManager = createReactInstanceManager();
32
         }
33
         }
34
+
33
         if (!reactInstanceManager.hasStartedCreatingInitialContext()) {
35
         if (!reactInstanceManager.hasStartedCreatingInitialContext()) {
34
             reactInstanceManager.createReactContextInBackground();
36
             reactInstanceManager.createReactContextInBackground();
35
         }
37
         }
58
     public void onDestroyApp() {
60
     public void onDestroyApp() {
59
         reactInstanceManager.onHostDestroy();
61
         reactInstanceManager.onHostDestroy();
60
         reactInstanceManager.destroy();
62
         reactInstanceManager.destroy();
63
+        reactInstanceManager.removeReactInstanceEventListener(this);
61
         reactInstanceManager = null;
64
         reactInstanceManager = null;
62
     }
65
     }
63
 
66
 
105
             replaceJsDevReloadListener(manager);
108
             replaceJsDevReloadListener(manager);
106
         }
109
         }
107
 
110
 
111
+        manager.addReactInstanceEventListener(this);
112
+
108
         return manager;
113
         return manager;
109
     }
114
     }
110
 
115
 
131
 
136
 
132
         list.addAll(additionalReactPackages);
137
         list.addAll(additionalReactPackages);
133
     }
138
     }
139
+
140
+    @Override
141
+    public void onReactContextInitialized(ReactContext context) {
142
+        NavigationApplication.instance.onReactInitialized(context);
143
+    }
134
 }
144
 }