From d4b59cd9d02a8c4eda3ac4bf89cfe8161847adf0 Mon Sep 17 00:00:00 2001 From: Pieter De Baets Date: Thu, 12 May 2022 03:25:17 -0700 Subject: [PATCH] Expose lazyViewManagers option on ReactNativeHost Summary: Changelog: [Android][Added] Option to enable lazyViewManager support with `ViewManagerOnDemandReactPackage` Reviewed By: RSNara Differential Revision: D36130066 fbshipit-source-id: b8b04b46f59248baacdf1717f7e32b45e56dd2b8 --- .../java/com/facebook/react/LazyReactPackage.java | 4 +--- .../main/java/com/facebook/react/ReactNativeHost.java | 11 +++++++++++ .../java/com/facebook/react/bridge/ModuleSpec.java | 11 ++--------- 3 files changed, 14 insertions(+), 12 deletions(-) diff --git a/ReactAndroid/src/main/java/com/facebook/react/LazyReactPackage.java b/ReactAndroid/src/main/java/com/facebook/react/LazyReactPackage.java index c8287a68c1..34bbe1c198 100644 --- a/ReactAndroid/src/main/java/com/facebook/react/LazyReactPackage.java +++ b/ReactAndroid/src/main/java/com/facebook/react/LazyReactPackage.java @@ -143,9 +143,7 @@ public abstract class LazyReactPackage implements ReactPackage { List modules = new ArrayList<>(); for (ModuleSpec holder : getNativeModules(reactContext)) { NativeModule nativeModule; - SystraceMessage.beginSection(TRACE_TAG_REACT_JAVA_BRIDGE, "createNativeModule") - .arg("module", holder.getType()) - .flush(); + SystraceMessage.beginSection(TRACE_TAG_REACT_JAVA_BRIDGE, "createNativeModule").flush(); ReactMarker.logMarker(ReactMarkerConstants.CREATE_MODULE_START, holder.getName()); try { nativeModule = holder.getProvider().get(); diff --git a/ReactAndroid/src/main/java/com/facebook/react/ReactNativeHost.java b/ReactAndroid/src/main/java/com/facebook/react/ReactNativeHost.java index 6f965a8d30..ac27d16dc2 100644 --- a/ReactAndroid/src/main/java/com/facebook/react/ReactNativeHost.java +++ b/ReactAndroid/src/main/java/com/facebook/react/ReactNativeHost.java @@ -74,6 +74,7 @@ public abstract class ReactNativeHost { .setDevSupportManagerFactory(getDevSupportManagerFactory()) .setRequireActivity(getShouldRequireActivity()) .setSurfaceDelegateFactory(getSurfaceDelegateFactory()) + .setLazyViewManagersEnabled(getLazyViewManagersEnabled()) .setRedBoxHandler(getRedBoxHandler()) .setJavaScriptExecutorFactory(getJavaScriptExecutorFactory()) .setUIImplementationProvider(getUIImplementationProvider()) @@ -135,6 +136,16 @@ public abstract class ReactNativeHost { return true; } + /** + * Returns whether view managers should be created lazily. See {@link + * ViewManagerOnDemandReactPackage} for details. + * + * @experimental + */ + public boolean getLazyViewManagersEnabled() { + return false; + } + /** * Return the {@link SurfaceDelegateFactory} used by NativeModules to get access to a {@link * SurfaceDelegate} to interact with a surface. By default in the mobile platform the {@link diff --git a/ReactAndroid/src/main/java/com/facebook/react/bridge/ModuleSpec.java b/ReactAndroid/src/main/java/com/facebook/react/bridge/ModuleSpec.java index 927060ca6b..26183c87a6 100644 --- a/ReactAndroid/src/main/java/com/facebook/react/bridge/ModuleSpec.java +++ b/ReactAndroid/src/main/java/com/facebook/react/bridge/ModuleSpec.java @@ -19,9 +19,8 @@ import javax.inject.Provider; public class ModuleSpec { private static final String TAG = "ModuleSpec"; - private final @Nullable Class mType; private final Provider mProvider; - private final String mName; + private final @Nullable String mName; public static ModuleSpec viewManagerSpec(Provider provider) { return new ModuleSpec(provider); @@ -54,22 +53,16 @@ public class ModuleSpec { * @param provider */ private ModuleSpec(Provider provider) { - mType = null; mProvider = provider; mName = null; } private ModuleSpec(Provider provider, String name) { - mType = null; mProvider = provider; mName = name; } - public @Nullable Class getType() { - return mType; - } - - public String getName() { + public @Nullable String getName() { return mName; }