Explorar el Código

Add ActivityCallbacks to Android

Guy Carmeli hace 8 años
padre
commit
7c3b95f35d

+ 11
- 0
android/app/src/main/java/com/reactnativenavigation/NavigationApplication.java Ver fichero

@@ -9,6 +9,7 @@ import com.facebook.react.ReactNativeHost;
9 9
 import com.facebook.react.ReactPackage;
10 10
 import com.facebook.react.bridge.ReactContext;
11 11
 import com.facebook.react.bridge.WritableMap;
12
+import com.reactnativenavigation.controllers.ActivityCallbacks;
12 13
 import com.reactnativenavigation.react.NavigationReactGateway;
13 14
 import com.reactnativenavigation.react.ReactGateway;
14 15
 
@@ -20,6 +21,7 @@ public abstract class NavigationApplication extends Application implements React
20 21
 
21 22
     private NavigationReactGateway reactGateway;
22 23
     private Handler handler;
24
+    private ActivityCallbacks activityCallbacks;
23 25
 
24 26
     @Override
25 27
     public void onCreate() {
@@ -27,6 +29,7 @@ public abstract class NavigationApplication extends Application implements React
27 29
         instance = this;
28 30
         handler = new Handler(getMainLooper());
29 31
         reactGateway = new NavigationReactGateway();
32
+        activityCallbacks = new ActivityCallbacks();
30 33
     }
31 34
 
32 35
     public void startReactContextOnceInBackgroundAndExecuteJS() {
@@ -45,6 +48,14 @@ public abstract class NavigationApplication extends Application implements React
45 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 59
     public boolean isReactContextInitialized() {
49 60
         return reactGateway.isInitialized();
50 61
     }

+ 35
- 0
android/app/src/main/java/com/reactnativenavigation/controllers/ActivityCallbacks.java Ver fichero

@@ -0,0 +1,35 @@
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 Ver fichero

@@ -56,6 +56,7 @@ public class NavigationActivity extends AppCompatActivity implements DefaultHard
56 56
         disableActivityShowAnimationIfNeeded();
57 57
         createLayout();
58 58
         createModalController();
59
+        NavigationApplication.instance.getActivityCallbacks().onActivityCreated(this, savedInstanceState);
59 60
     }
60 61
 
61 62
     private void disableActivityShowAnimationIfNeeded() {
@@ -73,6 +74,12 @@ public class NavigationActivity extends AppCompatActivity implements DefaultHard
73 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 83
     @Override
77 84
     protected void onResume() {
78 85
         super.onResume();
@@ -83,6 +90,7 @@ public class NavigationActivity extends AppCompatActivity implements DefaultHard
83 90
         currentActivity = this;
84 91
         setDeepLinkData();
85 92
         NavigationApplication.instance.getReactGateway().onResumeActivity(this, this);
93
+        NavigationApplication.instance.getActivityCallbacks().onActivityResumed(this);
86 94
         EventBus.instance.register(this);
87 95
     }
88 96
 
@@ -97,13 +105,21 @@ public class NavigationActivity extends AppCompatActivity implements DefaultHard
97 105
         super.onPause();
98 106
         currentActivity = null;
99 107
         NavigationApplication.instance.getReactGateway().onPauseActivity();
108
+        NavigationApplication.instance.getActivityCallbacks().onActivityPaused(this);
100 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 118
     @Override
104 119
     protected void onDestroy() {
105 120
         destroyLayouts();
106 121
         destroyJsIfNeeded();
122
+        NavigationApplication.instance.getActivityCallbacks().onActivityDestroyed(this);
107 123
         super.onDestroy();
108 124
     }
109 125
 
@@ -138,6 +154,7 @@ public class NavigationActivity extends AppCompatActivity implements DefaultHard
138 154
     @Override
139 155
     public void onActivityResult(int requestCode, int resultCode, Intent data) {
140 156
         NavigationApplication.instance.getReactGateway().onActivityResult(requestCode, resultCode, data);
157
+        NavigationApplication.instance.getActivityCallbacks().onActivityResult(requestCode, resultCode, data);
141 158
     }
142 159
 
143 160
     @Override