Browse Source

Add ActivityCallbacks to Android

Guy Carmeli 8 years ago
parent
commit
7c3b95f35d

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

9
 import com.facebook.react.ReactPackage;
9
 import com.facebook.react.ReactPackage;
10
 import com.facebook.react.bridge.ReactContext;
10
 import com.facebook.react.bridge.ReactContext;
11
 import com.facebook.react.bridge.WritableMap;
11
 import com.facebook.react.bridge.WritableMap;
12
+import com.reactnativenavigation.controllers.ActivityCallbacks;
12
 import com.reactnativenavigation.react.NavigationReactGateway;
13
 import com.reactnativenavigation.react.NavigationReactGateway;
13
 import com.reactnativenavigation.react.ReactGateway;
14
 import com.reactnativenavigation.react.ReactGateway;
14
 
15
 
20
 
21
 
21
     private NavigationReactGateway reactGateway;
22
     private NavigationReactGateway reactGateway;
22
     private Handler handler;
23
     private Handler handler;
24
+    private ActivityCallbacks activityCallbacks;
23
 
25
 
24
     @Override
26
     @Override
25
     public void onCreate() {
27
     public void onCreate() {
27
         instance = this;
29
         instance = this;
28
         handler = new Handler(getMainLooper());
30
         handler = new Handler(getMainLooper());
29
         reactGateway = new NavigationReactGateway();
31
         reactGateway = new NavigationReactGateway();
32
+        activityCallbacks = new ActivityCallbacks();
30
     }
33
     }
31
 
34
 
32
     public void startReactContextOnceInBackgroundAndExecuteJS() {
35
     public void startReactContextOnceInBackgroundAndExecuteJS() {
45
         return reactGateway;
48
         return reactGateway;
46
     }
49
     }
47
 
50
 
51
+    public ActivityCallbacks getActivityCallbacks() {
52
+        return activityCallbacks;
53
+    }
54
+
55
+    protected void setActivityCallbacks(ActivityCallbacks activityLifecycleCallbacks) {
56
+        this.activityCallbacks = activityLifecycleCallbacks;
57
+    }
58
+
48
     public boolean isReactContextInitialized() {
59
     public boolean isReactContextInitialized() {
49
         return reactGateway.isInitialized();
60
         return reactGateway.isInitialized();
50
     }
61
     }

+ 35
- 0
android/app/src/main/java/com/reactnativenavigation/controllers/ActivityCallbacks.java View File

1
+package com.reactnativenavigation.controllers;
2
+
3
+import android.app.Activity;
4
+import android.content.Intent;
5
+import android.os.Bundle;
6
+
7
+public class ActivityCallbacks {
8
+    public void onActivityCreated(Activity activity, Bundle savedInstanceState) {
9
+
10
+    }
11
+
12
+    public void onActivityStarted(Activity activity) {
13
+
14
+    }
15
+
16
+    public void onActivityResumed(Activity activity) {
17
+
18
+    }
19
+
20
+    public void onActivityPaused(Activity activity) {
21
+
22
+    }
23
+
24
+    public void onActivityStopped(Activity activity) {
25
+
26
+    }
27
+
28
+    public void onActivityResult(int requestCode, int resultCode, Intent data) {
29
+
30
+    }
31
+
32
+    public void onActivityDestroyed(Activity activity) {
33
+
34
+    }
35
+}

+ 17
- 0
android/app/src/main/java/com/reactnativenavigation/controllers/NavigationActivity.java View File

56
         disableActivityShowAnimationIfNeeded();
56
         disableActivityShowAnimationIfNeeded();
57
         createLayout();
57
         createLayout();
58
         createModalController();
58
         createModalController();
59
+        NavigationApplication.instance.getActivityCallbacks().onActivityCreated(this, savedInstanceState);
59
     }
60
     }
60
 
61
 
61
     private void disableActivityShowAnimationIfNeeded() {
62
     private void disableActivityShowAnimationIfNeeded() {
73
         setContentView(layout.asView());
74
         setContentView(layout.asView());
74
     }
75
     }
75
 
76
 
77
+    @Override
78
+    protected void onStart() {
79
+        super.onStart();
80
+        NavigationApplication.instance.getActivityCallbacks().onActivityStarted(this);
81
+    }
82
+
76
     @Override
83
     @Override
77
     protected void onResume() {
84
     protected void onResume() {
78
         super.onResume();
85
         super.onResume();
83
         currentActivity = this;
90
         currentActivity = this;
84
         setDeepLinkData();
91
         setDeepLinkData();
85
         NavigationApplication.instance.getReactGateway().onResumeActivity(this, this);
92
         NavigationApplication.instance.getReactGateway().onResumeActivity(this, this);
93
+        NavigationApplication.instance.getActivityCallbacks().onActivityResumed(this);
86
         EventBus.instance.register(this);
94
         EventBus.instance.register(this);
87
     }
95
     }
88
 
96
 
97
         super.onPause();
105
         super.onPause();
98
         currentActivity = null;
106
         currentActivity = null;
99
         NavigationApplication.instance.getReactGateway().onPauseActivity();
107
         NavigationApplication.instance.getReactGateway().onPauseActivity();
108
+        NavigationApplication.instance.getActivityCallbacks().onActivityPaused(this);
100
         EventBus.instance.unregister(this);
109
         EventBus.instance.unregister(this);
101
     }
110
     }
102
 
111
 
112
+    @Override
113
+    protected void onStop() {
114
+        super.onStop();
115
+        NavigationApplication.instance.getActivityCallbacks().onActivityStopped(this);
116
+    }
117
+
103
     @Override
118
     @Override
104
     protected void onDestroy() {
119
     protected void onDestroy() {
105
         destroyLayouts();
120
         destroyLayouts();
106
         destroyJsIfNeeded();
121
         destroyJsIfNeeded();
122
+        NavigationApplication.instance.getActivityCallbacks().onActivityDestroyed(this);
107
         super.onDestroy();
123
         super.onDestroy();
108
     }
124
     }
109
 
125
 
138
     @Override
154
     @Override
139
     public void onActivityResult(int requestCode, int resultCode, Intent data) {
155
     public void onActivityResult(int requestCode, int resultCode, Intent data) {
140
         NavigationApplication.instance.getReactGateway().onActivityResult(requestCode, resultCode, data);
156
         NavigationApplication.instance.getReactGateway().onActivityResult(requestCode, resultCode, data);
157
+        NavigationApplication.instance.getActivityCallbacks().onActivityResult(requestCode, resultCode, data);
141
     }
158
     }
142
 
159
 
143
     @Override
160
     @Override