|
@@ -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
|
}
|