diff --git a/ReactAndroid/src/main/java/com/facebook/react/config/ReactFeatureFlags.java b/ReactAndroid/src/main/java/com/facebook/react/config/ReactFeatureFlags.java index c06d0e0c350..7705d229527 100644 --- a/ReactAndroid/src/main/java/com/facebook/react/config/ReactFeatureFlags.java +++ b/ReactAndroid/src/main/java/com/facebook/react/config/ReactFeatureFlags.java @@ -89,4 +89,7 @@ public class ReactFeatureFlags { /** Feature flag to configure initialization of Fabric surfaces. */ public static boolean enableFabricStartSurfaceWithLayoutMetrics = true; + + /** Feature flag to have FabricUIManager teardown stop all active surfaces. */ + public static boolean enableFabricStopAllSurfacesOnTeardown = false; } diff --git a/ReactAndroid/src/main/java/com/facebook/react/fabric/FabricUIManager.java b/ReactAndroid/src/main/java/com/facebook/react/fabric/FabricUIManager.java index b80ee9f25c5..a556eb5fc24 100644 --- a/ReactAndroid/src/main/java/com/facebook/react/fabric/FabricUIManager.java +++ b/ReactAndroid/src/main/java/com/facebook/react/fabric/FabricUIManager.java @@ -286,6 +286,15 @@ public class FabricUIManager implements UIManager, LifecycleEventListener { // memory immediately. mDispatchUIFrameCallback.stop(); + // Stop all attached surfaces + if (ReactFeatureFlags.enableFabricStopAllSurfacesOnTeardown) { + FLog.e(TAG, "stop all attached surfaces"); + for (int surfaceId : mReactContextForRootTag.keySet()) { + FLog.e(TAG, "stop attached surface: " + surfaceId); + stopSurface(surfaceId); + } + } + mBinding.unregister(); mBinding = null;