説明なし

MainApplication.java 3.5KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106
  1. package com.test;
  2. import android.app.Application;
  3. import android.content.Context;
  4. import android.content.res.Configuration;
  5. import androidx.annotation.NonNull;
  6. import com.facebook.react.PackageList;
  7. import com.facebook.react.ReactApplication;
  8. import com.facebook.react.ReactInstanceManager;
  9. import com.facebook.react.ReactNativeHost;
  10. import com.facebook.react.ReactPackage;
  11. import com.facebook.react.config.ReactFeatureFlags;
  12. import com.facebook.soloader.SoLoader;
  13. import com.test.newarchitecture.MainApplicationReactNativeHost;
  14. import expo.modules.ApplicationLifecycleDispatcher;
  15. import expo.modules.ReactNativeHostWrapper;
  16. import java.lang.reflect.InvocationTargetException;
  17. import java.util.List;
  18. public class MainApplication extends Application implements ReactApplication {
  19. private final ReactNativeHost mReactNativeHost = new ReactNativeHostWrapper(
  20. this,
  21. new ReactNativeHost(this) {
  22. @Override
  23. public boolean getUseDeveloperSupport() {
  24. return BuildConfig.DEBUG;
  25. }
  26. @Override
  27. protected List<ReactPackage> getPackages() {
  28. @SuppressWarnings("UnnecessaryLocalVariable")
  29. List<ReactPackage> packages = new PackageList(this).getPackages();
  30. // Packages that cannot be autolinked yet can be added manually here, for example:
  31. // packages.add(new MyReactNativePackage());
  32. return packages;
  33. }
  34. @Override
  35. protected String getJSMainModuleName() {
  36. return "index";
  37. }
  38. });
  39. private final ReactNativeHost mNewArchitectureNativeHost =
  40. new ReactNativeHostWrapper(this, new MainApplicationReactNativeHost(this));
  41. @Override
  42. public ReactNativeHost getReactNativeHost() {
  43. if (BuildConfig.IS_NEW_ARCHITECTURE_ENABLED) {
  44. return mNewArchitectureNativeHost;
  45. } else {
  46. return mReactNativeHost;
  47. }
  48. }
  49. @Override
  50. public void onCreate() {
  51. super.onCreate();
  52. // If you opted-in for the New Architecture, we enable the TurboModule system
  53. ReactFeatureFlags.useTurboModules = BuildConfig.IS_NEW_ARCHITECTURE_ENABLED;
  54. SoLoader.init(this, /* native exopackage */ false);
  55. initializeFlipper(this, getReactNativeHost().getReactInstanceManager());
  56. ApplicationLifecycleDispatcher.onApplicationCreate(this);
  57. }
  58. @Override
  59. public void onConfigurationChanged(@NonNull Configuration newConfig) {
  60. super.onConfigurationChanged(newConfig);
  61. ApplicationLifecycleDispatcher.onConfigurationChanged(this, newConfig);
  62. }
  63. /**
  64. * Loads Flipper in React Native templates. Call this in the onCreate method with something like
  65. * initializeFlipper(this, getReactNativeHost().getReactInstanceManager());
  66. *
  67. * @param context
  68. * @param reactInstanceManager
  69. */
  70. private static void initializeFlipper(
  71. Context context, ReactInstanceManager reactInstanceManager) {
  72. if (BuildConfig.DEBUG) {
  73. try {
  74. /*
  75. We use reflection here to pick up the class that initializes Flipper,
  76. since Flipper library is not available in release mode
  77. */
  78. Class<?> aClass = Class.forName("com.test.ReactNativeFlipper");
  79. aClass
  80. .getMethod("initializeFlipper", Context.class, ReactInstanceManager.class)
  81. .invoke(null, context, reactInstanceManager);
  82. } catch (ClassNotFoundException e) {
  83. e.printStackTrace();
  84. } catch (NoSuchMethodException e) {
  85. e.printStackTrace();
  86. } catch (IllegalAccessException e) {
  87. e.printStackTrace();
  88. } catch (InvocationTargetException e) {
  89. e.printStackTrace();
  90. }
  91. }
  92. }
  93. }