Ver código fonte

refactoring activityLifecycle

Daniel Zlotin 8 anos atrás
pai
commit
8a322f339d

+ 0
- 2
android/app/src/main/java/com/reactnativenavigation/NavigationApplication.java Ver arquivo

@@ -4,7 +4,6 @@ import android.app.Application;
4 4
 
5 5
 import com.facebook.react.ReactApplication;
6 6
 import com.facebook.react.ReactNativeHost;
7
-import com.reactnativenavigation.controllers.NavigationActivityLifecycleHandler;
8 7
 import com.reactnativenavigation.react.NavigationReactNativeHost;
9 8
 
10 9
 public abstract class NavigationApplication extends Application implements ReactApplication {
@@ -16,7 +15,6 @@ public abstract class NavigationApplication extends Application implements React
16 15
 		super.onCreate();
17 16
 		instance = this;
18 17
 		host = new NavigationReactNativeHost(this);
19
-		registerActivityLifecycleCallbacks(new NavigationActivityLifecycleHandler(host.getReactInstanceManager()));
20 18
 	}
21 19
 
22 20
 	@Override

android/app/src/main/java/com/reactnativenavigation/controllers/NavigationActivityLifecycleHandler.java → android/app/src/main/java/com/reactnativenavigation/controllers/ActivityLifecycleDelegate.java Ver arquivo

@@ -1,75 +1,52 @@
1 1
 package com.reactnativenavigation.controllers;
2 2
 
3 3
 import android.app.Activity;
4
-import android.app.Application;
5
-import android.os.Bundle;
6 4
 
7 5
 import com.facebook.react.ReactInstanceManager;
8 6
 import com.facebook.react.bridge.ReactContext;
9
-import com.reactnativenavigation.NavigationActivity;
7
+import com.facebook.react.modules.core.DefaultHardwareBackBtnHandler;
10 8
 import com.reactnativenavigation.react.NavigationEventEmitter;
11 9
 import com.reactnativenavigation.react.ReactDevPermission;
12 10
 
13 11
 import java.util.concurrent.atomic.AtomicBoolean;
14 12
 
15
-public class NavigationActivityLifecycleHandler implements Application.ActivityLifecycleCallbacks {
13
+public class ActivityLifecycleDelegate {
14
+
15
+	private final Activity activity;
16
+	private final DefaultHardwareBackBtnHandler backBtnHandler;
16 17
 	private final ReactInstanceManager reactInstanceManager;
17 18
 	private final AtomicBoolean appLaunchEmitted = new AtomicBoolean(false);
18 19
 
19
-	public NavigationActivityLifecycleHandler(ReactInstanceManager reactInstanceManager) {
20
+	public ActivityLifecycleDelegate(Activity activity,
21
+	                                 DefaultHardwareBackBtnHandler backBtnHandler,
22
+	                                 ReactInstanceManager reactInstanceManager) {
23
+		this.activity = activity;
24
+		this.backBtnHandler = backBtnHandler;
20 25
 		this.reactInstanceManager = reactInstanceManager;
21 26
 	}
22 27
 
23
-	@Override
24
-	public void onActivityCreated(final Activity activity, Bundle bundle) {
25
-		if (activity instanceof NavigationActivity) {
26
-			handleCreated();
27
-		}
28
-	}
29
-
30
-	@Override
31
-	public void onActivityStarted(Activity activity) {
32
-	}
33
-
34
-	@Override
35
-	public void onActivityResumed(Activity activity) {
36
-		if (activity instanceof NavigationActivity) {
37
-			handleResumed((NavigationActivity) activity);
38
-		}
28
+	public void onActivityCreated() {
29
+		appLaunchEmitted.set(false);
39 30
 	}
40 31
 
41
-	@Override
42
-	public void onActivityPaused(Activity activity) {
43
-		if (activity instanceof NavigationActivity) {
44
-			handlePaused((NavigationActivity) activity);
32
+	public void onActivityResumed() {
33
+		if (ReactDevPermission.shouldAskPermission()) {
34
+			ReactDevPermission.askPermission(activity);
35
+		} else {
36
+			reactInstanceManager.onHostResume(activity, backBtnHandler);
37
+			prepareReactApp();
45 38
 		}
46 39
 	}
47 40
 
48
-	@Override
49
-	public void onActivityStopped(Activity activity) {
50
-	}
51
-
52
-	@Override
53
-	public void onActivitySaveInstanceState(Activity activity, Bundle bundle) {
54
-	}
55
-
56
-	@Override
57
-	public void onActivityDestroyed(Activity activity) {
58
-		if (activity instanceof NavigationActivity) {
59
-			handleDestroyed((NavigationActivity) activity);
41
+	public void onActivityPaused() {
42
+		if (reactInstanceManager.hasStartedCreatingInitialContext()) {
43
+			reactInstanceManager.onHostPause(activity);
60 44
 		}
61 45
 	}
62 46
 
63
-	private void handleCreated() {
64
-		appLaunchEmitted.set(false);
65
-	}
66
-
67
-	private void handleResumed(NavigationActivity activity) {
68
-		if (ReactDevPermission.shouldAskPermission()) {
69
-			ReactDevPermission.askPermission(activity);
70
-		} else {
71
-			reactInstanceManager.onHostResume(activity, activity);
72
-			prepareReactApp();
47
+	public void onActivityDestroyed() {
48
+		if (reactInstanceManager.hasStartedCreatingInitialContext()) {
49
+			reactInstanceManager.onHostDestroy(activity);
73 50
 		}
74 51
 	}
75 52
 
@@ -107,16 +84,4 @@ public class NavigationActivityLifecycleHandler implements Application.ActivityL
107 84
 	private boolean shouldCreateContext() {
108 85
 		return !reactInstanceManager.hasStartedCreatingInitialContext();
109 86
 	}
110
-
111
-	private void handlePaused(NavigationActivity activity) {
112
-		if (reactInstanceManager.hasStartedCreatingInitialContext()) {
113
-			reactInstanceManager.onHostPause(activity);
114
-		}
115
-	}
116
-
117
-	private void handleDestroyed(NavigationActivity activity) {
118
-		if (reactInstanceManager.hasStartedCreatingInitialContext()) {
119
-			reactInstanceManager.onHostDestroy(activity);
120
-		}
121
-	}
122 87
 }

+ 4
- 0
android/app/src/main/java/com/reactnativenavigation/controllers/CommandsHandler.java Ver arquivo

@@ -0,0 +1,4 @@
1
+package com.reactnativenavigation.controllers;
2
+
3
+public class CommandsHandler {
4
+}

+ 4
- 0
android/app/src/test/java/com/reactnativenavigation/NavigationActivityTest.java Ver arquivo

@@ -16,4 +16,8 @@ public class NavigationActivityTest extends BaseTest {
16 16
 		activity.setContentView(view);
17 17
 		assertThat(activity.getContentView()).isSameAs(view);
18 18
 	}
19
+
20
+	@Test
21
+	public void reportsLifecycleEventsToDelegate() throws Exception {
22
+	}
19 23
 }

+ 4
- 0
android/app/src/test/java/com/reactnativenavigation/controllers/NavigationActivityLifecycleHandlerTest.java Ver arquivo

@@ -0,0 +1,4 @@
1
+package com.reactnativenavigation.controllers;
2
+
3
+public class NavigationActivityLifecycleHandlerTest {
4
+}