Adding show/hide Native Implementation of Dev Loading Module (#35746)
Summary: Pull Request resolved: https://github.com/facebook/react-native/pull/35746 Changelog: [Android][Added] - For supporting Dev Loading View across multiple platforms, adding native implementation for showMessage() & hide() of Dev Loading Module Reviewed By: rshest Differential Revision: D42286425 fbshipit-source-id: b2aa160583bc86965501f3ed3027152bb0b47af0
This commit is contained in:
Родитель
57f1196557
Коммит
4923a0997b
|
@ -444,6 +444,10 @@ public class ReactContext extends ContextWrapper {
|
|||
return mExceptionHandlerWrapper;
|
||||
}
|
||||
|
||||
public JSExceptionHandler getJSExceptionHandler() {
|
||||
return mJSExceptionHandler;
|
||||
}
|
||||
|
||||
public boolean hasCurrentActivity() {
|
||||
return mCurrentActivity != null && mCurrentActivity.get() != null;
|
||||
}
|
||||
|
|
|
@ -65,6 +65,8 @@ import java.util.concurrent.TimeoutException;
|
|||
*/
|
||||
public final class BridgeDevSupportManager extends DevSupportManagerBase {
|
||||
private boolean mIsSamplingProfilerEnabled = false;
|
||||
private ReactInstanceDevHelper mReactInstanceManagerHelper;
|
||||
private @Nullable DevLoadingViewManager mDevLoadingViewManager;
|
||||
|
||||
public BridgeDevSupportManager(
|
||||
Context applicationContext,
|
||||
|
@ -89,6 +91,9 @@ public final class BridgeDevSupportManager extends DevSupportManagerBase {
|
|||
surfaceDelegateFactory,
|
||||
devLoadingViewManager);
|
||||
|
||||
mReactInstanceManagerHelper = reactInstanceManagerHelper;
|
||||
mDevLoadingViewManager = devLoadingViewManager;
|
||||
|
||||
if (getDevSettings().isStartSamplingProfilerOnInit()) {
|
||||
// Only start the profiler. If its already running, there is an error
|
||||
if (!mIsSamplingProfilerEnabled) {
|
||||
|
@ -128,6 +133,14 @@ public final class BridgeDevSupportManager extends DevSupportManagerBase {
|
|||
}
|
||||
}
|
||||
|
||||
public DevLoadingViewManager getDevLoadingViewManager() {
|
||||
return mDevLoadingViewManager;
|
||||
}
|
||||
|
||||
public ReactInstanceDevHelper getReactInstanceManagerHelper() {
|
||||
return mReactInstanceManagerHelper;
|
||||
}
|
||||
|
||||
@Override
|
||||
protected String getUniqueTag() {
|
||||
return "Bridge";
|
||||
|
|
|
@ -8,6 +8,9 @@ rn_android_library(
|
|||
"pfh:ReactNative_CommonInfrastructurePlaceholder",
|
||||
],
|
||||
language = "JAVA",
|
||||
provided_deps = [
|
||||
react_native_dep("third-party/android/androidx:annotation"),
|
||||
],
|
||||
visibility = [
|
||||
"PUBLIC",
|
||||
],
|
||||
|
@ -15,6 +18,8 @@ rn_android_library(
|
|||
react_native_dep("third-party/java/infer-annotations:infer-annotations"),
|
||||
react_native_dep("third-party/java/jsr-305:jsr-305"),
|
||||
react_native_target("java/com/facebook/react/bridge:bridge"),
|
||||
react_native_target("java/com/facebook/react/devsupport:devsupport"),
|
||||
react_native_target("java/com/facebook/react/devsupport:interfaces"),
|
||||
react_native_target("java/com/facebook/react/common:common"),
|
||||
react_native_target("java/com/facebook/react/module/annotations:annotations"),
|
||||
],
|
||||
|
|
|
@ -7,19 +7,36 @@
|
|||
|
||||
package com.facebook.react.modules.devloading;
|
||||
|
||||
import android.util.Log;
|
||||
import androidx.annotation.Nullable;
|
||||
import com.facebook.fbreact.specs.NativeDevLoadingViewSpec;
|
||||
import com.facebook.react.bridge.JSExceptionHandler;
|
||||
import com.facebook.react.bridge.NativeModule;
|
||||
import com.facebook.react.bridge.ReactApplicationContext;
|
||||
import com.facebook.react.bridge.UiThreadUtil;
|
||||
import com.facebook.react.devsupport.BridgeDevSupportManager;
|
||||
import com.facebook.react.devsupport.DefaultDevLoadingViewImplementation;
|
||||
import com.facebook.react.devsupport.interfaces.DevLoadingViewManager;
|
||||
import com.facebook.react.module.annotations.ReactModule;
|
||||
|
||||
/** {@link NativeModule} that allows JS to show dev loading view. */
|
||||
@ReactModule(name = NativeDevLoadingViewSpec.NAME)
|
||||
public class DevLoadingModule extends NativeDevLoadingViewSpec {
|
||||
|
||||
private final JSExceptionHandler mJSExceptionHandler;
|
||||
private @Nullable DevLoadingViewManager mDevLoadingViewManager;
|
||||
|
||||
public DevLoadingModule(ReactApplicationContext reactContext) {
|
||||
super(reactContext);
|
||||
mJSExceptionHandler = reactContext.getJSExceptionHandler();
|
||||
if (mJSExceptionHandler != null && mJSExceptionHandler instanceof BridgeDevSupportManager) {
|
||||
mDevLoadingViewManager =
|
||||
((BridgeDevSupportManager) mJSExceptionHandler).getDevLoadingViewManager();
|
||||
mDevLoadingViewManager =
|
||||
mDevLoadingViewManager != null
|
||||
? mDevLoadingViewManager
|
||||
: new DefaultDevLoadingViewImplementation(
|
||||
((BridgeDevSupportManager) mJSExceptionHandler).getReactInstanceManagerHelper());
|
||||
}
|
||||
}
|
||||
|
||||
@Override
|
||||
|
@ -29,7 +46,7 @@ public class DevLoadingModule extends NativeDevLoadingViewSpec {
|
|||
new Runnable() {
|
||||
@Override
|
||||
public void run() {
|
||||
Log.w(NAME, "Showing Message in DevLoadingModule java.");
|
||||
mDevLoadingViewManager.showMessage(message);
|
||||
}
|
||||
});
|
||||
}
|
||||
|
@ -41,7 +58,7 @@ public class DevLoadingModule extends NativeDevLoadingViewSpec {
|
|||
new Runnable() {
|
||||
@Override
|
||||
public void run() {
|
||||
Log.w(NAME, "Hiding Message in DevLoadingModule java.");
|
||||
mDevLoadingViewManager.hide();
|
||||
}
|
||||
});
|
||||
}
|
||||
|
|
Загрузка…
Ссылка в новой задаче