Procházet zdrojové kódy

Support listening to reload events

The reload listener currently doesn't properly pickup reloads from debug menu
Guy Carmeli před 7 roky
rodič
revize
d4a1981141

+ 17
- 1
lib/android/app/src/main/java/com/reactnativenavigation/react/JsDevReloadHandler.java Zobrazit soubor

10
 import com.facebook.react.ReactInstanceManager;
10
 import com.facebook.react.ReactInstanceManager;
11
 
11
 
12
 public class JsDevReloadHandler {
12
 public class JsDevReloadHandler {
13
+    public interface ReloadListener {
14
+        void onReload();
15
+    }
16
+
13
 	private static final String RELOAD_BROADCAST = "com.reactnativenavigation.broadcast.RELOAD";
17
 	private static final String RELOAD_BROADCAST = "com.reactnativenavigation.broadcast.RELOAD";
14
 	private final BroadcastReceiver reloadReceiver = new BroadcastReceiver() {
18
 	private final BroadcastReceiver reloadReceiver = new BroadcastReceiver() {
15
 		@Override
19
 		@Override
19
 	};
23
 	};
20
 	private final ReactInstanceManager reactInstanceManager;
24
 	private final ReactInstanceManager reactInstanceManager;
21
 	private long firstRTimestamp = 0;
25
 	private long firstRTimestamp = 0;
26
+    private ReloadListener reloadListener;
22
 
27
 
23
-	public JsDevReloadHandler(final ReactInstanceManager reactInstanceManager) {
28
+    JsDevReloadHandler(final ReactInstanceManager reactInstanceManager) {
24
 		this.reactInstanceManager = reactInstanceManager;
29
 		this.reactInstanceManager = reactInstanceManager;
25
 	}
30
 	}
26
 
31
 
32
+    public void addReloadListener(ReloadListener listener) {
33
+        reloadListener = listener;
34
+    }
35
+
36
+    public void removeReloadListener(ReloadListener listener) {
37
+        if (reloadListener == listener) {
38
+            reloadListener = null;
39
+        }
40
+    }
41
+
27
 	public void onActivityResumed(Activity activity) {
42
 	public void onActivityResumed(Activity activity) {
28
 		activity.registerReceiver(reloadReceiver, new IntentFilter(RELOAD_BROADCAST));
43
 		activity.registerReceiver(reloadReceiver, new IntentFilter(RELOAD_BROADCAST));
29
 	}
44
 	}
57
 	}
72
 	}
58
 
73
 
59
 	private void reloadReactNative() {
74
 	private void reloadReactNative() {
75
+        reloadListener.onReload();
60
 		reactInstanceManager.getDevSupportManager().handleReloadJS();
76
 		reactInstanceManager.getDevSupportManager().handleReloadJS();
61
 	}
77
 	}
62
 }
78
 }