mirror of
https://github.com/facebook/react-native.git
synced 2025-11-01 09:14:26 +00:00
Rollout bridgelessArchitectureMemoryPressureHackyBoltsFix (#43478)
Summary: Pull Request resolved: https://github.com/facebook/react-native/pull/43478 This is rolled out internally already. Also exposing `memoryPressureRouter` to match the ReactInstanceManager interface. Changelog: [Internal] Reviewed By: sammy-SC Differential Revision: D54802021 fbshipit-source-id: b74dcde71296d3925acfc2171d2a77d90960e15e
This commit is contained in:
committed by
Facebook GitHub Bot
parent
10d48134c9
commit
a27e2acef4
@@ -197,6 +197,7 @@ public abstract interface class com/facebook/react/ReactHost {
|
||||
public abstract fun getDevSupportManager ()Lcom/facebook/react/devsupport/interfaces/DevSupportManager;
|
||||
public abstract fun getJsEngineResolutionAlgorithm ()Lcom/facebook/react/JSEngineResolutionAlgorithm;
|
||||
public abstract fun getLifecycleState ()Lcom/facebook/react/common/LifecycleState;
|
||||
public abstract fun getMemoryPressureRouter ()Lcom/facebook/react/MemoryPressureRouter;
|
||||
public abstract fun getReactQueueConfiguration ()Lcom/facebook/react/bridge/queue/ReactQueueConfiguration;
|
||||
public abstract fun onActivityResult (Landroid/app/Activity;IILandroid/content/Intent;)V
|
||||
public abstract fun onBackPressed ()Z
|
||||
@@ -1922,7 +1923,6 @@ public class com/facebook/react/config/ReactFeatureFlags {
|
||||
public static field excludeYogaFromRawProps Z
|
||||
public static field rejectTurboModulePromiseOnNativeError Z
|
||||
public static field traceTurboModulePromiseRejections Z
|
||||
public static field unstable_bridgelessArchitectureMemoryPressureHackyBoltsFix Z
|
||||
public static field unstable_enableTurboModuleSyncVoidMethods Z
|
||||
public static field unstable_useFabricInterop Z
|
||||
public static field unstable_useTurboModuleInterop Z
|
||||
|
||||
@@ -48,6 +48,9 @@ public interface ReactHost {
|
||||
/** [JSEngineResolutionAlgorithm] used by this host. */
|
||||
public var jsEngineResolutionAlgorithm: JSEngineResolutionAlgorithm?
|
||||
|
||||
/** Routes memory pressure events to interested components */
|
||||
public val memoryPressureRouter: MemoryPressureRouter
|
||||
|
||||
/** To be called when back button is pressed */
|
||||
public fun onBackPressed(): Boolean
|
||||
|
||||
|
||||
-3
@@ -66,9 +66,6 @@ public class ReactFeatureFlags {
|
||||
*/
|
||||
public static boolean enableBridgelessArchitecture = false;
|
||||
|
||||
/** Server-side gating for a hacky fix to an ANR in the bridgeless core, related to Bolts task. */
|
||||
public static boolean unstable_bridgelessArchitectureMemoryPressureHackyBoltsFix = false;
|
||||
|
||||
/**
|
||||
* Does the bridgeless architecture log soft exceptions. Could be useful for tracking down issues.
|
||||
*/
|
||||
|
||||
+10
-13
@@ -135,7 +135,7 @@ public class ReactHostImpl implements ReactHost {
|
||||
new ReactLifecycleStateManager(mBridgelessReactStateTracker);
|
||||
private final int mId = mCounter.getAndIncrement();
|
||||
private @Nullable JSEngineResolutionAlgorithm mJSEngineResolutionAlgorithm = null;
|
||||
private MemoryPressureListener mMemoryPressureListener;
|
||||
private @Nullable MemoryPressureListener mMemoryPressureListener;
|
||||
private @Nullable DefaultHardwareBackBtnHandler mDefaultHardwareBackBtnHandler;
|
||||
|
||||
private final Set<Function0<Unit>> mBeforeDestroyListeners =
|
||||
@@ -178,11 +178,6 @@ public class ReactHostImpl implements ReactHost {
|
||||
mReactJsExceptionHandler = reactJsExceptionHandler;
|
||||
mQueueThreadExceptionHandler = ReactHostImpl.this::handleHostException;
|
||||
mMemoryPressureRouter = new MemoryPressureRouter(context);
|
||||
mMemoryPressureListener =
|
||||
level ->
|
||||
callWithExistingReactInstance(
|
||||
"handleMemoryPressure(" + level + ")",
|
||||
reactInstance -> reactInstance.handleMemoryPressure(level));
|
||||
mAllowPackagerServerAccess = allowPackagerServerAccess;
|
||||
if (DEV) {
|
||||
mDevSupportManager =
|
||||
@@ -386,6 +381,7 @@ public class ReactHostImpl implements ReactHost {
|
||||
return surface;
|
||||
}
|
||||
|
||||
@Override
|
||||
public MemoryPressureRouter getMemoryPressureRouter() {
|
||||
return mMemoryPressureRouter;
|
||||
}
|
||||
@@ -1030,11 +1026,10 @@ public class ReactHostImpl implements ReactHost {
|
||||
mUseDevSupport,
|
||||
getOrCreateReactHostInspectorTarget());
|
||||
|
||||
if (ReactFeatureFlags
|
||||
.unstable_bridgelessArchitectureMemoryPressureHackyBoltsFix) {
|
||||
mMemoryPressureListener = createMemoryPressureListener(instance);
|
||||
}
|
||||
mMemoryPressureRouter.addMemoryPressureListener(mMemoryPressureListener);
|
||||
MemoryPressureListener memoryPressureListener =
|
||||
createMemoryPressureListener(instance);
|
||||
mMemoryPressureListener = memoryPressureListener;
|
||||
mMemoryPressureRouter.addMemoryPressureListener(memoryPressureListener);
|
||||
|
||||
log(method, "Loading JS Bundle");
|
||||
instance.loadJSBundle(bundleLoader);
|
||||
@@ -1366,8 +1361,10 @@ public class ReactHostImpl implements ReactHost {
|
||||
task -> {
|
||||
reactInstanceTaskUnwrapper.unwrap(task, "4: Destroying ReactContext");
|
||||
|
||||
log(method, "Removing memory pressure listener");
|
||||
mMemoryPressureRouter.removeMemoryPressureListener(mMemoryPressureListener);
|
||||
if (mMemoryPressureListener != null) {
|
||||
log(method, "Removing memory pressure listener");
|
||||
mMemoryPressureRouter.removeMemoryPressureListener(mMemoryPressureListener);
|
||||
}
|
||||
|
||||
final ReactContext reactContext = mBridgelessReactContextRef.getNullable();
|
||||
if (reactContext != null) {
|
||||
|
||||
Reference in New Issue
Block a user