react-native-navigation的迁移库

NavigationActivity.java 3.0KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102
  1. package com.reactnativenavigation.controllers;
  2. import android.os.Bundle;
  3. import android.support.v7.app.AppCompatActivity;
  4. import android.view.View;
  5. import com.facebook.react.ReactInstanceManager;
  6. import com.facebook.react.ReactNativeHost;
  7. import com.facebook.react.ReactPackage;
  8. import com.facebook.react.bridge.ReactContext;
  9. import com.facebook.react.modules.core.DefaultHardwareBackBtnHandler;
  10. import com.facebook.react.shell.MainReactPackage;
  11. import com.reactnativenavigation.R;
  12. import com.reactnativenavigation.layout.StackLayout;
  13. import com.reactnativenavigation.react.NavigationEventEmitter;
  14. import com.reactnativenavigation.react.NavigationPackage;
  15. import com.reactnativenavigation.react.ReactDevPermission;
  16. import java.util.Arrays;
  17. import java.util.List;
  18. public class NavigationActivity extends AppCompatActivity implements DefaultHardwareBackBtnHandler {
  19. public static NavigationActivity instance;
  20. private ReactNativeHost host;
  21. private StackLayout root;
  22. @Override
  23. public void onCreate(Bundle savedInstanceState) {
  24. super.onCreate(savedInstanceState);
  25. instance = this;
  26. setContentView(R.layout.splash);
  27. host = new ReactNativeHost(getApplication()) {
  28. @Override
  29. protected boolean getUseDeveloperSupport() {
  30. return NavigationApplication.instance.isDebug();
  31. }
  32. @Override
  33. protected List<ReactPackage> getPackages() {
  34. return Arrays.asList(
  35. new MainReactPackage(),
  36. new NavigationPackage()
  37. );
  38. }
  39. };
  40. host.getReactInstanceManager().addReactInstanceEventListener(new ReactInstanceManager.ReactInstanceEventListener() {
  41. @Override
  42. public void onReactContextInitialized(ReactContext context) {
  43. // TODO should we implement this line also if context already exists onCreate?
  44. new NavigationEventEmitter(context).emitAppLaunched();
  45. }
  46. });
  47. }
  48. @Override
  49. protected void onResume() {
  50. super.onResume();
  51. if (ReactDevPermission.shouldAskPermission()) {
  52. ReactDevPermission.askPermission(this);
  53. } else {
  54. host.getReactInstanceManager().createReactContextInBackground();
  55. }
  56. host.getReactInstanceManager().onHostResume(this, this);
  57. }
  58. @Override
  59. protected void onPause() {
  60. super.onPause();
  61. host.getReactInstanceManager().onHostPause(this);
  62. }
  63. @Override
  64. protected void onDestroy() {
  65. super.onDestroy();
  66. instance = null;
  67. host.getReactInstanceManager().onHostDestroy(this);
  68. }
  69. @Override
  70. public void invokeDefaultOnBackPressed() {
  71. onBackPressed();
  72. }
  73. public ReactNativeHost getHost() {
  74. return host;
  75. }
  76. public void setRoot(StackLayout rootView) {
  77. this.root = rootView;
  78. setContentView(rootView.asView());
  79. }
  80. public void push(View view) {
  81. root.push(view);
  82. }
  83. public void pop() {
  84. root.pop();
  85. }
  86. }