|
@@ -3,7 +3,6 @@ package com.reactnativenavigation.react;
|
3
|
3
|
import android.app.Activity;
|
4
|
4
|
import android.content.Intent;
|
5
|
5
|
|
6
|
|
-import com.facebook.react.LifecycleState;
|
7
|
6
|
import com.facebook.react.ReactInstanceManager;
|
8
|
7
|
import com.facebook.react.ReactPackage;
|
9
|
8
|
import com.facebook.react.bridge.ReactContext;
|
|
@@ -16,66 +15,54 @@ import com.reactnativenavigation.bridge.NavigationReactPackage;
|
16
|
15
|
import java.util.ArrayList;
|
17
|
16
|
import java.util.List;
|
18
|
17
|
|
19
|
|
-public class NavigationReactGateway implements ReactGateway, ReactInstanceManager.ReactInstanceEventListener {
|
|
18
|
+public class NavigationReactGateway extends ReactGatewayHost implements ReactInstanceManager.ReactInstanceEventListener {
|
20
|
19
|
|
21
|
20
|
private OnJsDevReloadListener onJsDevReloadListener;
|
22
|
|
- private ReactInstanceManager reactInstanceManager;
|
23
|
21
|
private NavigationReactEventEmitter reactEventEmitter;
|
24
|
22
|
|
25
|
23
|
public NavigationReactGateway() {
|
26
|
|
- reactInstanceManager = createReactInstanceManager();
|
|
24
|
+ super(NavigationApplication.instance);
|
27
|
25
|
}
|
28
|
26
|
|
29
|
27
|
@Override
|
30
|
28
|
public void startReactContextOnceInBackgroundAndExecuteJS() {
|
31
|
|
- if (reactInstanceManager == null) {
|
32
|
|
- reactInstanceManager = createReactInstanceManager();
|
33
|
|
- }
|
34
|
|
-
|
35
|
|
- if (!reactInstanceManager.hasStartedCreatingInitialContext()) {
|
36
|
|
- reactInstanceManager.createReactContextInBackground();
|
37
|
|
- }
|
|
29
|
+ getReactInstanceManager().createReactContextInBackground();
|
38
|
30
|
}
|
39
|
31
|
|
40
|
32
|
public boolean isInitialized() {
|
41
|
|
- return reactInstanceManager != null && reactInstanceManager.getCurrentReactContext() != null;
|
|
33
|
+ return hasInstance() && getReactInstanceManager().getCurrentReactContext() != null;
|
42
|
34
|
}
|
43
|
35
|
|
44
|
36
|
public ReactContext getReactContext() {
|
45
|
|
- return reactInstanceManager.getCurrentReactContext();
|
|
37
|
+ return getReactInstanceManager().getCurrentReactContext();
|
46
|
38
|
}
|
47
|
39
|
|
48
|
40
|
public NavigationReactEventEmitter getReactEventEmitter() {
|
49
|
41
|
return reactEventEmitter;
|
50
|
42
|
}
|
51
|
43
|
|
52
|
|
- public ReactInstanceManager getReactInstanceManager() {
|
53
|
|
- return reactInstanceManager;
|
54
|
|
- }
|
55
|
|
-
|
56
|
44
|
public void onBackPressed() {
|
57
|
|
- reactInstanceManager.onBackPressed();
|
|
45
|
+ getReactInstanceManager().onBackPressed();
|
58
|
46
|
}
|
59
|
47
|
|
60
|
48
|
public void onDestroyApp() {
|
61
|
|
- reactInstanceManager.onHostDestroy();
|
62
|
|
- reactInstanceManager.destroy();
|
63
|
|
- reactInstanceManager.removeReactInstanceEventListener(this);
|
64
|
|
- reactInstanceManager = null;
|
|
49
|
+ getReactInstanceManager().onHostDestroy();
|
|
50
|
+ getReactInstanceManager().removeReactInstanceEventListener(this);
|
|
51
|
+ clear();
|
65
|
52
|
}
|
66
|
53
|
|
67
|
54
|
public void onPauseActivity() {
|
68
|
|
- reactInstanceManager.onHostPause();
|
|
55
|
+ getReactInstanceManager().onHostPause();
|
69
|
56
|
onJsDevReloadListener = null;
|
70
|
57
|
}
|
71
|
58
|
|
72
|
59
|
public void onResumeActivity(Activity activity, DefaultHardwareBackBtnHandler defaultHardwareBackBtnHandler, OnJsDevReloadListener onJsDevReloadListener) {
|
73
|
60
|
this.onJsDevReloadListener = onJsDevReloadListener;
|
74
|
|
- reactInstanceManager.onHostResume(activity, defaultHardwareBackBtnHandler);
|
|
61
|
+ getReactInstanceManager().onHostResume(activity, defaultHardwareBackBtnHandler);
|
75
|
62
|
}
|
76
|
63
|
|
77
|
64
|
public void onActivityResult(int requestCode, int resultCode, Intent data) {
|
78
|
|
- reactInstanceManager.onActivityResult(requestCode, resultCode, data);
|
|
65
|
+ getReactInstanceManager().onActivityResult(requestCode, resultCode, data);
|
79
|
66
|
}
|
80
|
67
|
|
81
|
68
|
private void replaceJsDevReloadListener(ReactInstanceManager manager) {
|
|
@@ -88,29 +75,26 @@ public class NavigationReactGateway implements ReactGateway, ReactInstanceManage
|
88
|
75
|
}).replace();
|
89
|
76
|
}
|
90
|
77
|
|
91
|
|
- private ReactInstanceManager createReactInstanceManager() {
|
92
|
|
- ReactInstanceManager.Builder builder = ReactInstanceManager.builder()
|
93
|
|
- .setApplication(NavigationApplication.instance)
|
94
|
|
- .setJSMainModuleName(NavigationApplication.instance.getJsEntryFileName())
|
95
|
|
- .setBundleAssetName(NavigationApplication.instance.getBundleAssetName())
|
96
|
|
- .setUseDeveloperSupport(NavigationApplication.instance.isDebug())
|
97
|
|
- .setInitialLifecycleState(LifecycleState.BEFORE_RESUME);
|
98
|
|
-
|
99
|
|
- for (ReactPackage reactPackage : createReactPackages()) {
|
100
|
|
- builder.addPackage(reactPackage);
|
101
|
|
- }
|
102
|
|
-
|
103
|
|
- ReactInstanceManager manager = builder.build();
|
104
|
|
-
|
|
78
|
+ @Override
|
|
79
|
+ protected ReactInstanceManager createReactInstanceManager() {
|
|
80
|
+ ReactInstanceManager manager = super.createReactInstanceManager();
|
105
|
81
|
if (NavigationApplication.instance.isDebug()) {
|
106
|
82
|
replaceJsDevReloadListener(manager);
|
107
|
83
|
}
|
108
|
|
-
|
109
|
84
|
manager.addReactInstanceEventListener(this);
|
110
|
|
-
|
111
|
85
|
return manager;
|
112
|
86
|
}
|
113
|
87
|
|
|
88
|
+ @Override
|
|
89
|
+ protected boolean getUseDeveloperSupport() {
|
|
90
|
+ return NavigationApplication.instance.isDebug();
|
|
91
|
+ }
|
|
92
|
+
|
|
93
|
+ @Override
|
|
94
|
+ protected List<ReactPackage> getPackages() {
|
|
95
|
+ return createReactPackages();
|
|
96
|
+ }
|
|
97
|
+
|
114
|
98
|
private List<ReactPackage> createReactPackages() {
|
115
|
99
|
List<ReactPackage> list = new ArrayList<>();
|
116
|
100
|
list.add(new MainReactPackage());
|