react-native-navigation的迁移库

SplashActivity.java 2.4KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465666768697071727374757677787980818283
  1. package com.reactnativenavigation.controllers;
  2. import android.graphics.Color;
  3. import android.os.Bundle;
  4. import android.support.annotation.LayoutRes;
  5. import android.support.annotation.Nullable;
  6. import android.support.v7.app.AppCompatActivity;
  7. import android.view.View;
  8. import com.reactnativenavigation.NavigationApplication;
  9. import com.reactnativenavigation.react.ReactDevPermission;
  10. public abstract class SplashActivity extends AppCompatActivity {
  11. public static boolean isResumed = false;
  12. @Override
  13. protected void onCreate(@Nullable Bundle savedInstanceState) {
  14. super.onCreate(savedInstanceState);
  15. setSplashLayout();
  16. IntentDataHandler.saveIntentData(getIntent());
  17. }
  18. @Override
  19. protected void onResume() {
  20. super.onResume();
  21. isResumed = true;
  22. if (NavigationApplication.instance.getReactGateway().hasStartedCreatingContext()) {
  23. NavigationApplication.instance.getEventEmitter().sendAppLaunchedEvent();
  24. if (NavigationApplication.instance.clearHostOnActivityDestroy()) {
  25. overridePendingTransition(0, 0);
  26. finish();
  27. }
  28. return;
  29. }
  30. if (ReactDevPermission.shouldAskPermission()) {
  31. ReactDevPermission.askPermission(this);
  32. return;
  33. }
  34. if (NavigationApplication.instance.isReactContextInitialized()) {
  35. NavigationApplication.instance.getEventEmitter().sendAppLaunchedEvent();
  36. return;
  37. }
  38. // TODO I'm starting to think this entire flow is incorrect and should be done in Application
  39. NavigationApplication.instance.startReactContextOnceInBackgroundAndExecuteJS();
  40. }
  41. @Override
  42. protected void onPause() {
  43. super.onPause();
  44. isResumed = false;
  45. }
  46. private void setSplashLayout() {
  47. final int splashLayout = getSplashLayout();
  48. if (splashLayout > 0) {
  49. setContentView(splashLayout);
  50. } else {
  51. setContentView(createSplashLayout());
  52. }
  53. }
  54. /**
  55. * @return xml layout res id
  56. */
  57. @LayoutRes
  58. public int getSplashLayout() {
  59. return 0;
  60. }
  61. /**
  62. * @return the layout you would like to show while react's js context loads
  63. */
  64. public View createSplashLayout() {
  65. View view = new View(this);
  66. view.setBackgroundColor(Color.WHITE);
  67. return view;
  68. }
  69. }