mirror of
https://github.com/facebook/react-native.git
synced 2025-11-01 09:14:26 +00:00
Implement TurboModule eager initialization
Summary: The TurboModuleManagerDelegate now supports a `getEagerInitModuleNames()` method, which is supposed to return a `java.util.List` containing the names of all NativeModules that require eager initialization. The NativeModuels are created when the `TurboModuleManager` is created. This happens inside `ReactInstanceManager.createReactContext` slightly after the NativeModuleRegistry is created, which is when our legacy NativeModules are eagerly initialized. All NativeModules declared in `TurboReactPackages` that are wired into the `TurboModules` infra via `ReactPackageTurboModuleManagerDelegate` can use the `ReactModule(needsEagerInit = true)` annotation. Our build pipeline should correctly process the annotation into a `ModuleInfo`, and `ReactPackageTurboModuleManagerDelegate` should correctly forward the eagerly initialized module names to TurboModuleManager. Changelog: [Android][Added] - Implement TurboModule eager initialization support Reviewed By: mdvacca Differential Revision: D18819552 fbshipit-source-id: b2009a3b8f4e064362d2abeb5281637962531678
This commit is contained in:
committed by
Facebook Github Bot
parent
b9491b7c51
commit
b7f49a84d5
@@ -54,6 +54,7 @@ import com.facebook.react.bridge.Arguments;
|
||||
import com.facebook.react.bridge.CatalystInstance;
|
||||
import com.facebook.react.bridge.CatalystInstanceImpl;
|
||||
import com.facebook.react.bridge.JSBundleLoader;
|
||||
import com.facebook.react.bridge.JSIModule;
|
||||
import com.facebook.react.bridge.JSIModulePackage;
|
||||
import com.facebook.react.bridge.JSIModuleType;
|
||||
import com.facebook.react.bridge.JavaJSExecutor;
|
||||
@@ -92,6 +93,7 @@ import com.facebook.react.modules.debug.interfaces.DeveloperSettings;
|
||||
import com.facebook.react.modules.fabric.ReactFabric;
|
||||
import com.facebook.react.packagerconnection.RequestHandler;
|
||||
import com.facebook.react.surface.ReactStage;
|
||||
import com.facebook.react.turbomodule.core.interfaces.TurboModuleRegistry;
|
||||
import com.facebook.react.uimanager.DisplayMetricsHolder;
|
||||
import com.facebook.react.uimanager.ReactRoot;
|
||||
import com.facebook.react.uimanager.UIImplementationProvider;
|
||||
@@ -1197,8 +1199,16 @@ public class ReactInstanceManager {
|
||||
reactContext, catalystInstance.getJavaScriptContextHolder()));
|
||||
|
||||
if (ReactFeatureFlags.useTurboModules) {
|
||||
catalystInstance.setTurboModuleManager(
|
||||
catalystInstance.getJSIModule(JSIModuleType.TurboModuleManager));
|
||||
JSIModule turboModuleManager =
|
||||
catalystInstance.getJSIModule(JSIModuleType.TurboModuleManager);
|
||||
catalystInstance.setTurboModuleManager(turboModuleManager);
|
||||
|
||||
TurboModuleRegistry registry = (TurboModuleRegistry) turboModuleManager;
|
||||
|
||||
// Eagerly initialize TurboModules
|
||||
for (String moduleName : registry.getEagerInitModuleNames()) {
|
||||
registry.getModule(moduleName);
|
||||
}
|
||||
}
|
||||
}
|
||||
if (mBridgeIdleDebugListener != null) {
|
||||
|
||||
Reference in New Issue
Block a user