Browse Source

refactoring activityLifecycle

Daniel Zlotin 8 years ago
parent
commit
8a322f339d

+ 0
- 2
android/app/src/main/java/com/reactnativenavigation/NavigationApplication.java View File

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

android/app/src/main/java/com/reactnativenavigation/controllers/NavigationActivityLifecycleHandler.java → android/app/src/main/java/com/reactnativenavigation/controllers/ActivityLifecycleDelegate.java View File

1
 package com.reactnativenavigation.controllers;
1
 package com.reactnativenavigation.controllers;
2
 
2
 
3
 import android.app.Activity;
3
 import android.app.Activity;
4
-import android.app.Application;
5
-import android.os.Bundle;
6
 
4
 
7
 import com.facebook.react.ReactInstanceManager;
5
 import com.facebook.react.ReactInstanceManager;
8
 import com.facebook.react.bridge.ReactContext;
6
 import com.facebook.react.bridge.ReactContext;
9
-import com.reactnativenavigation.NavigationActivity;
7
+import com.facebook.react.modules.core.DefaultHardwareBackBtnHandler;
10
 import com.reactnativenavigation.react.NavigationEventEmitter;
8
 import com.reactnativenavigation.react.NavigationEventEmitter;
11
 import com.reactnativenavigation.react.ReactDevPermission;
9
 import com.reactnativenavigation.react.ReactDevPermission;
12
 
10
 
13
 import java.util.concurrent.atomic.AtomicBoolean;
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
 	private final ReactInstanceManager reactInstanceManager;
17
 	private final ReactInstanceManager reactInstanceManager;
17
 	private final AtomicBoolean appLaunchEmitted = new AtomicBoolean(false);
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
 		this.reactInstanceManager = reactInstanceManager;
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
 	private boolean shouldCreateContext() {
84
 	private boolean shouldCreateContext() {
108
 		return !reactInstanceManager.hasStartedCreatingInitialContext();
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 View File

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

+ 4
- 0
android/app/src/test/java/com/reactnativenavigation/NavigationActivityTest.java View File

16
 		activity.setContentView(view);
16
 		activity.setContentView(view);
17
 		assertThat(activity.getContentView()).isSameAs(view);
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 View File

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