react-native-navigation的迁移库

NavigationReactNativeHost.java 2.7KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172
  1. package com.reactnativenavigation.react;
  2. import com.facebook.infer.annotation.Assertions;
  3. import com.facebook.react.ReactInstanceManager;
  4. import com.facebook.react.ReactInstanceManagerBuilder;
  5. import com.facebook.react.ReactNativeHost;
  6. import com.facebook.react.ReactPackage;
  7. import com.facebook.react.common.LifecycleState;
  8. import com.facebook.react.devsupport.interfaces.DevBundleDownloadListener;
  9. import com.reactnativenavigation.NavigationApplication;
  10. import androidx.annotation.NonNull;
  11. import androidx.annotation.Nullable;
  12. /**
  13. * Default implementation of {@link ReactNativeHost} that includes {@link NavigationPackage}
  14. * and user-defined additional packages.
  15. */
  16. public abstract class NavigationReactNativeHost extends ReactNativeHost implements BundleDownloadListenerProvider {
  17. private @Nullable NavigationDevBundleDownloadListener bundleListener;
  18. private final DevBundleDownloadListener bundleListenerMediator = new DevBundleDownloadListenerAdapter() {
  19. @Override
  20. public void onSuccess() {
  21. if (bundleListener != null) {
  22. bundleListener.onSuccess();
  23. }
  24. }
  25. };
  26. @SuppressWarnings("WeakerAccess")
  27. public NavigationReactNativeHost(NavigationApplication application) {
  28. super(application);
  29. }
  30. @Override
  31. public void setBundleLoaderListener(NavigationDevBundleDownloadListener listener) {
  32. bundleListener = listener;
  33. }
  34. protected ReactInstanceManager createReactInstanceManager() {
  35. ReactInstanceManagerBuilder builder = ReactInstanceManager.builder()
  36. .setApplication(getApplication())
  37. .setJSMainModulePath(getJSMainModuleName())
  38. .setUseDeveloperSupport(getUseDeveloperSupport())
  39. .setRedBoxHandler(getRedBoxHandler())
  40. .setJavaScriptExecutorFactory(getJavaScriptExecutorFactory())
  41. .setUIImplementationProvider(getUIImplementationProvider())
  42. .setInitialLifecycleState(LifecycleState.BEFORE_CREATE)
  43. .setJSIModulesProvider(getJSIModulesProvider())
  44. .setDevBundleDownloadListener(getDevBundleDownloadListener());
  45. for (ReactPackage reactPackage : getPackages()) {
  46. builder.addPackage(reactPackage);
  47. }
  48. String jsBundleFile = getJSBundleFile();
  49. if (jsBundleFile != null) {
  50. builder.setJSBundleFile(jsBundleFile);
  51. } else {
  52. builder.setBundleAssetName(Assertions.assertNotNull(getBundleAssetName()));
  53. }
  54. return builder.build();
  55. }
  56. @SuppressWarnings("WeakerAccess")
  57. @NonNull
  58. protected DevBundleDownloadListener getDevBundleDownloadListener() {
  59. return bundleListenerMediator;
  60. }
  61. }