react-native-navigation的迁移库

NavigationActivity.java 2.9KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101
  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. new NavigationEventEmitter(context).emitAppLaunched();
  44. }
  45. });
  46. }
  47. @Override
  48. protected void onResume() {
  49. super.onResume();
  50. if (ReactDevPermission.shouldAskPermission()) {
  51. ReactDevPermission.askPermission(this);
  52. } else {
  53. host.getReactInstanceManager().createReactContextInBackground();
  54. }
  55. host.getReactInstanceManager().onHostResume(this, this);
  56. }
  57. @Override
  58. protected void onPause() {
  59. super.onPause();
  60. host.getReactInstanceManager().onHostPause(this);
  61. }
  62. @Override
  63. protected void onDestroy() {
  64. super.onDestroy();
  65. instance = null;
  66. host.getReactInstanceManager().onHostDestroy(this);
  67. }
  68. @Override
  69. public void invokeDefaultOnBackPressed() {
  70. onBackPressed();
  71. }
  72. public ReactNativeHost getHost() {
  73. return host;
  74. }
  75. public void setRoot(StackLayout rootView) {
  76. this.root = rootView;
  77. setContentView(rootView.asView());
  78. }
  79. public void push(View view) {
  80. root.push(view);
  81. }
  82. public void pop() {
  83. root.pop();
  84. }
  85. }