mirror of
https://github.com/facebook/react-native.git
synced 2025-11-01 09:14:26 +00:00
Support onConfigurationChanged in Bridgeless (#43463)
Summary: Pull Request resolved: https://github.com/facebook/react-native/pull/43463 Implement `onConfigurationChanged` in Bridgeless by adding it to ReactHostImpl Changelog: [Android][Breaking] Implement onConfigurationChanged in Bridgeless Reviewed By: cortinico, RSNara Differential Revision: D54792399 fbshipit-source-id: 6851daca815f486f4d839e128a1d740d3fec1996
This commit is contained in:
committed by
Facebook GitHub Bot
parent
5807ada292
commit
b2e1db0fbf
@@ -150,6 +150,7 @@ public class com/facebook/react/ReactDelegate {
|
||||
public fun loadApp (Ljava/lang/String;)V
|
||||
public fun onActivityResult (IILandroid/content/Intent;Z)V
|
||||
public fun onBackPressed ()Z
|
||||
public fun onConfigurationChanged (Landroid/content/res/Configuration;)V
|
||||
public fun onHostDestroy ()V
|
||||
public fun onHostPause ()V
|
||||
public fun onHostResume ()V
|
||||
@@ -199,6 +200,7 @@ public abstract interface class com/facebook/react/ReactHost {
|
||||
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
|
||||
public abstract fun onConfigurationChanged (Landroid/content/Context;)V
|
||||
public abstract fun onHostDestroy ()V
|
||||
public abstract fun onHostDestroy (Landroid/app/Activity;)V
|
||||
public abstract fun onHostPause ()V
|
||||
@@ -3639,6 +3641,7 @@ public class com/facebook/react/runtime/ReactHostImpl : com/facebook/react/React
|
||||
public fun getReactQueueConfiguration ()Lcom/facebook/react/bridge/queue/ReactQueueConfiguration;
|
||||
public fun onActivityResult (Landroid/app/Activity;IILandroid/content/Intent;)V
|
||||
public fun onBackPressed ()Z
|
||||
public fun onConfigurationChanged (Landroid/content/Context;)V
|
||||
public fun onHostDestroy ()V
|
||||
public fun onHostDestroy (Landroid/app/Activity;)V
|
||||
public fun onHostPause ()V
|
||||
|
||||
+1
-7
@@ -191,13 +191,7 @@ public class ReactActivityDelegate {
|
||||
}
|
||||
|
||||
public void onConfigurationChanged(Configuration newConfig) {
|
||||
if (ReactFeatureFlags.enableBridgelessArchitecture) {
|
||||
// TODO T156475655: support onConfigurationChanged
|
||||
} else {
|
||||
if (getReactNativeHost().hasInstance()) {
|
||||
getReactInstanceManager().onConfigurationChanged(getContext(), newConfig);
|
||||
}
|
||||
}
|
||||
mReactDelegate.onConfigurationChanged(newConfig);
|
||||
}
|
||||
|
||||
public void requestPermissions(
|
||||
|
||||
+12
@@ -9,6 +9,7 @@ package com.facebook.react;
|
||||
|
||||
import android.app.Activity;
|
||||
import android.content.Intent;
|
||||
import android.content.res.Configuration;
|
||||
import android.os.Bundle;
|
||||
import android.view.KeyEvent;
|
||||
import androidx.annotation.Nullable;
|
||||
@@ -172,6 +173,17 @@ public class ReactDelegate {
|
||||
}
|
||||
}
|
||||
|
||||
public void onConfigurationChanged(Configuration newConfig) {
|
||||
if (ReactFeatureFlags.enableBridgelessArchitecture) {
|
||||
mReactHost.onConfigurationChanged(Assertions.assertNotNull(mActivity));
|
||||
} else {
|
||||
if (getReactNativeHost().hasInstance()) {
|
||||
getReactInstanceManager()
|
||||
.onConfigurationChanged(Assertions.assertNotNull(mActivity), newConfig);
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
public void loadApp() {
|
||||
loadApp(mMainComponentName);
|
||||
}
|
||||
|
||||
@@ -126,6 +126,8 @@ public interface ReactHost {
|
||||
/* This method will give JS the opportunity to receive intents via Linking. */
|
||||
public fun onNewIntent(intent: Intent)
|
||||
|
||||
public fun onConfigurationChanged(context: Context)
|
||||
|
||||
public fun addBeforeDestroyListener(onBeforeDestroy: () -> Unit)
|
||||
|
||||
public fun removeBeforeDestroyListener(onBeforeDestroy: () -> Unit)
|
||||
|
||||
+15
@@ -58,6 +58,7 @@ import com.facebook.react.fabric.FabricUIManager;
|
||||
import com.facebook.react.interfaces.TaskInterface;
|
||||
import com.facebook.react.interfaces.exceptionmanager.ReactJsExceptionHandler;
|
||||
import com.facebook.react.interfaces.fabric.ReactSurface;
|
||||
import com.facebook.react.modules.appearance.AppearanceModule;
|
||||
import com.facebook.react.modules.core.DefaultHardwareBackBtnHandler;
|
||||
import com.facebook.react.modules.core.DeviceEventManagerModule;
|
||||
import com.facebook.react.runtime.internal.bolts.Continuation;
|
||||
@@ -699,6 +700,20 @@ public class ReactHostImpl implements ReactHost {
|
||||
new ReactNoCrashSoftException("Tried to access onNewIntent while context is not ready"));
|
||||
}
|
||||
|
||||
@ThreadConfined(UI)
|
||||
@Override
|
||||
public void onConfigurationChanged(Context updatedContext) {
|
||||
ReactContext currentReactContext = getCurrentReactContext();
|
||||
if (currentReactContext != null) {
|
||||
AppearanceModule appearanceModule =
|
||||
currentReactContext.getNativeModule(AppearanceModule.class);
|
||||
|
||||
if (appearanceModule != null) {
|
||||
appearanceModule.onConfigurationChanged(updatedContext);
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
@Nullable
|
||||
JavaScriptContextHolder getJavaScriptContextHolder() {
|
||||
final ReactInstance reactInstance = mReactInstanceTaskRef.get().getResult();
|
||||
|
||||
Reference in New Issue
Block a user