Browse Source

Support listening to reload events

The reload listener currently doesn't properly pickup reloads from debug menu
Guy Carmeli 7 years ago
parent
commit
d4a1981141

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

@@ -10,6 +10,10 @@ import android.view.KeyEvent;
10 10
 import com.facebook.react.ReactInstanceManager;
11 11
 
12 12
 public class JsDevReloadHandler {
13
+    public interface ReloadListener {
14
+        void onReload();
15
+    }
16
+
13 17
 	private static final String RELOAD_BROADCAST = "com.reactnativenavigation.broadcast.RELOAD";
14 18
 	private final BroadcastReceiver reloadReceiver = new BroadcastReceiver() {
15 19
 		@Override
@@ -19,11 +23,22 @@ public class JsDevReloadHandler {
19 23
 	};
20 24
 	private final ReactInstanceManager reactInstanceManager;
21 25
 	private long firstRTimestamp = 0;
26
+    private ReloadListener reloadListener;
22 27
 
23
-	public JsDevReloadHandler(final ReactInstanceManager reactInstanceManager) {
28
+    JsDevReloadHandler(final ReactInstanceManager reactInstanceManager) {
24 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 42
 	public void onActivityResumed(Activity activity) {
28 43
 		activity.registerReceiver(reloadReceiver, new IntentFilter(RELOAD_BROADCAST));
29 44
 	}
@@ -57,6 +72,7 @@ public class JsDevReloadHandler {
57 72
 	}
58 73
 
59 74
 	private void reloadReactNative() {
75
+        reloadListener.onReload();
60 76
 		reactInstanceManager.getDevSupportManager().handleReloadJS();
61 77
 	}
62 78
 }