Browse Source

update splash flow

Daniel Zlotin 8 years ago
parent
commit
0e67defdf5

+ 6
- 1
android/app/src/main/AndroidManifest.xml View File

1
 <manifest xmlns:android="http://schemas.android.com/apk/res/android"
1
 <manifest xmlns:android="http://schemas.android.com/apk/res/android"
2
     package="com.reactnativenavigation">
2
     package="com.reactnativenavigation">
3
 
3
 
4
-    <application>
4
+    <application
5
+        android:allowBackup="false"
6
+        android:theme="@style/Theme.AppCompat.Light.NoActionBar">
5
         <activity android:name=".controllers.NavigationActivity" />
7
         <activity android:name=".controllers.NavigationActivity" />
8
+        <activity
9
+            android:name="com.facebook.react.devsupport.DevSettingsActivity"
10
+            android:exported="false" />
6
     </application>
11
     </application>
7
 
12
 
8
 </manifest>
13
 </manifest>

+ 11
- 8
android/app/src/main/java/com/reactnativenavigation/controllers/SplashActivity.java View File

16
     protected void onCreate(@Nullable Bundle savedInstanceState) {
16
     protected void onCreate(@Nullable Bundle savedInstanceState) {
17
         super.onCreate(savedInstanceState);
17
         super.onCreate(savedInstanceState);
18
         setSplashLayout();
18
         setSplashLayout();
19
+    }
19
 
20
 
20
-        if (NavigationApplication.instance.isReactContextInitialized()) {
21
-            finish();
21
+    @Override
22
+    protected void onResume() {
23
+        super.onResume();
24
+
25
+        if (NavigationApplication.instance.getReactGateway().hasStartedCreatingContext()) {
22
             return;
26
             return;
23
         }
27
         }
24
 
28
 
25
         if (ReactDevPermission.shouldAskPermission()) {
29
         if (ReactDevPermission.shouldAskPermission()) {
26
             ReactDevPermission.askPermission(this);
30
             ReactDevPermission.askPermission(this);
31
+            return;
32
+        }
33
+
34
+        if (NavigationApplication.instance.isReactContextInitialized()) {
27
             finish();
35
             finish();
28
             return;
36
             return;
29
         }
37
         }
30
 
38
 
39
+        // TODO I'm starting to think this entire flow is incorrect and should be done in Application
31
         NavigationApplication.instance.startReactContextOnceInBackgroundAndExecuteJS();
40
         NavigationApplication.instance.startReactContextOnceInBackgroundAndExecuteJS();
32
     }
41
     }
33
 
42
 
34
-    @Override
35
-    protected void onPause() {
36
-        super.onPause();
37
-        finish();
38
-    }
39
-
40
     private void setSplashLayout() {
43
     private void setSplashLayout() {
41
         final int splashLayout = getSplashLayout();
44
         final int splashLayout = getSplashLayout();
42
         if (splashLayout > 0) {
45
         if (splashLayout > 0) {

+ 5
- 0
android/app/src/main/java/com/reactnativenavigation/react/NavigationReactGateway.java View File

38
         return host.hasInstance() && getReactInstanceManager().getCurrentReactContext() != null;
38
         return host.hasInstance() && getReactInstanceManager().getCurrentReactContext() != null;
39
     }
39
     }
40
 
40
 
41
+    @Override
42
+    public boolean hasStartedCreatingContext() {
43
+        return getReactInstanceManager().hasStartedCreatingInitialContext();
44
+    }
45
+
41
     public ReactContext getReactContext() {
46
     public ReactContext getReactContext() {
42
         return getReactInstanceManager().getCurrentReactContext();
47
         return getReactInstanceManager().getCurrentReactContext();
43
     }
48
     }

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

29
     void onBackPressed();
29
     void onBackPressed();
30
 
30
 
31
     void onActivityResult(int requestCode, int resultCode, Intent data);
31
     void onActivityResult(int requestCode, int resultCode, Intent data);
32
+
33
+    boolean hasStartedCreatingContext();
32
 }
34
 }

+ 1
- 4
example/android/app/src/main/AndroidManifest.xml View File

7
         android:name=".MyApplication"
7
         android:name=".MyApplication"
8
         android:allowBackup="false"
8
         android:allowBackup="false"
9
         android:icon="@mipmap/ic_launcher"
9
         android:icon="@mipmap/ic_launcher"
10
-        android:label="@string/app_name"
11
-        android:theme="@style/AppTheme">
10
+        android:label="@string/app_name">
12
         <activity
11
         <activity
13
             android:name=".MainActivity"
12
             android:name=".MainActivity"
14
-            android:configChanges="keyboard|keyboardHidden|orientation|screenSize"
15
             android:label="@string/app_name">
13
             android:label="@string/app_name">
16
             <intent-filter>
14
             <intent-filter>
17
                 <action android:name="android.intent.action.MAIN" />
15
                 <action android:name="android.intent.action.MAIN" />
18
                 <category android:name="android.intent.category.LAUNCHER" />
16
                 <category android:name="android.intent.category.LAUNCHER" />
19
             </intent-filter>
17
             </intent-filter>
20
         </activity>
18
         </activity>
21
-        <activity android:name="com.facebook.react.devsupport.DevSettingsActivity" />
22
     </application>
19
     </application>
23
 
20
 
24
 </manifest>
21
 </manifest>

+ 0
- 8
example/android/app/src/main/res/values/styles.xml View File

1
-<resources>
2
-
3
-    <!-- Base application theme. -->
4
-    <style name="AppTheme" parent="Theme.AppCompat.Light.NoActionBar">
5
-        <!-- Customize your theme here. -->
6
-    </style>
7
-
8
-</resources>

+ 1
- 1
example/package.json View File

3
   "version": "0.0.1",
3
   "version": "0.0.1",
4
   "private": true,
4
   "private": true,
5
   "scripts": {
5
   "scripts": {
6
-    "start": "watchman watch-del-all && (adb reverse tcp:8081 tcp:8081 || true) && node node_modules/react-native/local-cli/cli.js start",
6
+    "start": "watchman watch-del-all && (adb reverse tcp:8081 tcp:8081 || true) && node node_modules/react-native/local-cli/cli.js start --reset-cache",
7
     "xcode": "open ios/example.xcodeproj",
7
     "xcode": "open ios/example.xcodeproj",
8
     "android": "cd android && ./gradlew installDebug"
8
     "android": "cd android && ./gradlew installDebug"
9
   },
9
   },