mirror of
https://github.com/facebook/react-native.git
synced 2025-11-01 09:14:26 +00:00
Do not eagerly allocate all view managers in DefaultReactNativeHost (#42869)
Summary: Pull Request resolved: https://github.com/facebook/react-native/pull/42869 `DefaultReactNativeHost` builds a `ViewManagerRegistry` based on a list of ViewManagers, which is inefficient, as we have to allocate them all ahead of time (defeating the purpose of `ViewManagerOnDemandReactPackage`). Instead provide a `ViewManagerResolver`which lazily resolves them. Changelog: [Internal] Reviewed By: cortinico Differential Revision: D53406841 fbshipit-source-id: be8437e2127fb6741d1948cecbcf5c3d9f8de268
This commit is contained in:
committed by
Facebook GitHub Bot
parent
1ce7bfd8c9
commit
f3977afb77
+9
-5
@@ -11,7 +11,6 @@ import android.app.Application
|
||||
import android.content.Context
|
||||
import com.facebook.react.JSEngineResolutionAlgorithm
|
||||
import com.facebook.react.ReactHost
|
||||
import com.facebook.react.ReactInstanceManager
|
||||
import com.facebook.react.ReactNativeHost
|
||||
import com.facebook.react.ReactPackageTurboModuleManagerDelegate
|
||||
import com.facebook.react.bridge.ReactApplicationContext
|
||||
@@ -20,6 +19,7 @@ import com.facebook.react.fabric.ComponentFactory
|
||||
import com.facebook.react.fabric.FabricUIManagerProviderImpl
|
||||
import com.facebook.react.fabric.ReactNativeConfig
|
||||
import com.facebook.react.uimanager.ViewManagerRegistry
|
||||
import com.facebook.react.uimanager.ViewManagerResolver
|
||||
|
||||
/**
|
||||
* A utility class that allows you to simplify the setup of a [ReactNativeHost] for new apps in Open
|
||||
@@ -46,13 +46,17 @@ protected constructor(
|
||||
if (isNewArchEnabled) {
|
||||
UIManagerProvider { reactApplicationContext: ReactApplicationContext ->
|
||||
val componentFactory = ComponentFactory()
|
||||
|
||||
DefaultComponentsRegistry.register(componentFactory)
|
||||
|
||||
val reactInstanceManager: ReactInstanceManager = getReactInstanceManager()
|
||||
val viewManagerRegistry =
|
||||
ViewManagerRegistry(
|
||||
object : ViewManagerResolver {
|
||||
override fun getViewManager(viewManagerName: String) =
|
||||
reactInstanceManager.createViewManager(viewManagerName)
|
||||
|
||||
override fun getViewManagerNames() = reactInstanceManager.viewManagerNames
|
||||
})
|
||||
|
||||
val viewManagers = reactInstanceManager.getOrCreateViewManagers(reactApplicationContext)
|
||||
val viewManagerRegistry = ViewManagerRegistry(viewManagers)
|
||||
FabricUIManagerProviderImpl(
|
||||
componentFactory, ReactNativeConfig.DEFAULT_CONFIG, viewManagerRegistry)
|
||||
.createUIManager(reactApplicationContext)
|
||||
|
||||
Reference in New Issue
Block a user