diff --git a/packages/react-native/ReactAndroid/api/ReactAndroid.api b/packages/react-native/ReactAndroid/api/ReactAndroid.api index 4d97920dd2ae94..c7f223a1353826 100644 --- a/packages/react-native/ReactAndroid/api/ReactAndroid.api +++ b/packages/react-native/ReactAndroid/api/ReactAndroid.api @@ -188,6 +188,7 @@ public class com/facebook/react/ReactFragment : androidx/fragment/app/Fragment, protected static final field ARG_LAUNCH_OPTIONS Ljava/lang/String; protected field mReactDelegate Lcom/facebook/react/ReactDelegate; public fun ()V + protected fun (Z)V public fun checkPermission (Ljava/lang/String;II)I public fun checkSelfPermission (Ljava/lang/String;)I protected fun getReactDelegate ()Lcom/facebook/react/ReactDelegate; diff --git a/packages/react-native/ReactAndroid/src/main/java/com/facebook/react/ReactFragment.java b/packages/react-native/ReactAndroid/src/main/java/com/facebook/react/ReactFragment.java index 12f2d9daba822b..1ee220200df88c 100644 --- a/packages/react-native/ReactAndroid/src/main/java/com/facebook/react/ReactFragment.java +++ b/packages/react-native/ReactAndroid/src/main/java/com/facebook/react/ReactFragment.java @@ -32,10 +32,20 @@ public class ReactFragment extends Fragment implements PermissionAwareActivity { protected ReactDelegate mReactDelegate; + private final boolean mDisableHostLifecycleEvents; + @Nullable private PermissionListener mPermissionListener; public ReactFragment() { // Required empty public constructor + this(false); + } + + /** + * @param disableHostLifecycleEvents Disable forwarding lifecycle events to the {@link ReactHost}. + */ + protected ReactFragment(boolean disableHostLifecycleEvents) { + this.mDisableHostLifecycleEvents = disableHostLifecycleEvents; } /** @@ -99,19 +109,27 @@ public View onCreateView( @Override public void onResume() { super.onResume(); - mReactDelegate.onHostResume(); + if (!mDisableHostLifecycleEvents) { + mReactDelegate.onHostResume(); + } } @Override public void onPause() { super.onPause(); - mReactDelegate.onHostPause(); + if (!mDisableHostLifecycleEvents) { + mReactDelegate.onHostPause(); + } } @Override public void onDestroy() { super.onDestroy(); - mReactDelegate.onHostDestroy(); + if (!mDisableHostLifecycleEvents) { + mReactDelegate.onHostDestroy(); + } else { + mReactDelegate.unloadApp(); + } } // endregion