Просмотр исходного кода

Move eventEmitter to NavigationReactInstance

Guy Carmeli 8 лет назад
Родитель
Сommit
fde3a31f40

+ 0
- 15
android/app/src/main/java/com/reactnativenavigation/NavigationApplication.java Просмотреть файл

5
 import android.support.annotation.NonNull;
5
 import android.support.annotation.NonNull;
6
 
6
 
7
 import com.facebook.react.ReactPackage;
7
 import com.facebook.react.ReactPackage;
8
-import com.facebook.react.bridge.ReactContext;
9
 import com.facebook.react.shell.MainReactPackage;
8
 import com.facebook.react.shell.MainReactPackage;
10
-import com.reactnativenavigation.bridge.NavigationReactEventEmitter;
11
 import com.reactnativenavigation.bridge.NavigationReactPackage;
9
 import com.reactnativenavigation.bridge.NavigationReactPackage;
12
 import com.reactnativenavigation.react.NavigationReactInstance;
10
 import com.reactnativenavigation.react.NavigationReactInstance;
13
 
11
 
18
 
16
 
19
     public static NavigationApplication instance;
17
     public static NavigationApplication instance;
20
     private NavigationReactInstance navigationReactInstance;
18
     private NavigationReactInstance navigationReactInstance;
21
-    private NavigationReactEventEmitter reactEventEmitter;
22
     private Handler handler;
19
     private Handler handler;
23
 
20
 
24
     @Override
21
     @Override
30
         navigationReactInstance.startReactContextOnceInBackgroundAndExecuteJS();
27
         navigationReactInstance.startReactContextOnceInBackgroundAndExecuteJS();
31
     }
28
     }
32
 
29
 
33
-    public NavigationReactEventEmitter getReactEventEmitter() {
34
-        if (reactEventEmitter == null) {
35
-            reactEventEmitter = new NavigationReactEventEmitter(getCurrentReactContext());
36
-        }
37
-
38
-        return reactEventEmitter;
39
-    }
40
-
41
-    private ReactContext getCurrentReactContext() {
42
-        return navigationReactInstance.getReactInstanceManager().getCurrentReactContext();
43
-    }
44
-
45
     public Handler getMainHandler() {
30
     public Handler getMainHandler() {
46
         return handler;
31
         return handler;
47
     }
32
     }

+ 12
- 2
android/app/src/main/java/com/reactnativenavigation/react/NavigationReactInstance.java Просмотреть файл

7
 import com.facebook.react.ReactPackage;
7
 import com.facebook.react.ReactPackage;
8
 import com.facebook.react.modules.core.DefaultHardwareBackBtnHandler;
8
 import com.facebook.react.modules.core.DefaultHardwareBackBtnHandler;
9
 import com.reactnativenavigation.NavigationApplication;
9
 import com.reactnativenavigation.NavigationApplication;
10
+import com.reactnativenavigation.bridge.NavigationReactEventEmitter;
10
 import com.reactnativenavigation.controllers.NavigationActivity;
11
 import com.reactnativenavigation.controllers.NavigationActivity;
11
 
12
 
12
 public class NavigationReactInstance {
13
 public class NavigationReactInstance {
13
-
14
     private final ReactInstanceManager reactInstanceManager;
14
     private final ReactInstanceManager reactInstanceManager;
15
+    private NavigationReactEventEmitter reactEventEmitter;
15
     private OnJsDevReloadListener onJsDevReloadListener;
16
     private OnJsDevReloadListener onJsDevReloadListener;
16
 
17
 
17
     public interface OnJsDevReloadListener {
18
     public interface OnJsDevReloadListener {
50
     }
51
     }
51
 
52
 
52
     public void onPause() {
53
     public void onPause() {
53
-        this.onJsDevReloadListener = null;
54
+        onJsDevReloadListener = null;
55
+        reactEventEmitter = null;
54
         reactInstanceManager.onHostPause();
56
         reactInstanceManager.onHostPause();
55
     }
57
     }
56
 
58
 
82
 
84
 
83
         return builder.build();
85
         return builder.build();
84
     }
86
     }
87
+
88
+    public NavigationReactEventEmitter getReactEventEmitter() {
89
+        if (reactEventEmitter == null) {
90
+            reactEventEmitter = new NavigationReactEventEmitter(reactInstanceManager.getCurrentReactContext());
91
+        }
92
+
93
+        return reactEventEmitter;
94
+    }
85
 }
95
 }

+ 5
- 1
android/app/src/main/java/com/reactnativenavigation/views/TitleBarButton.java Просмотреть файл

93
 
93
 
94
     @Override
94
     @Override
95
     public boolean onMenuItemClick(MenuItem item) {
95
     public boolean onMenuItemClick(MenuItem item) {
96
-        NavigationApplication.instance.getReactEventEmitter().sendEvent(buttonParams.eventId, navigatorEventId);
96
+        NavigationApplication.
97
+                instance.
98
+                getNavigationReactInstance().
99
+                getReactEventEmitter().
100
+                sendEvent(buttonParams.eventId, navigatorEventId);
97
         return true;
101
         return true;
98
     }
102
     }
99
 }
103
 }