diff --git a/packages/react-native/ReactAndroid/src/main/java/com/facebook/react/bridge/CatalystInstanceImpl.java b/packages/react-native/ReactAndroid/src/main/java/com/facebook/react/bridge/CatalystInstanceImpl.java index b1e38b256d5..fb738344710 100644 --- a/packages/react-native/ReactAndroid/src/main/java/com/facebook/react/bridge/CatalystInstanceImpl.java +++ b/packages/react-native/ReactAndroid/src/main/java/com/facebook/react/bridge/CatalystInstanceImpl.java @@ -152,6 +152,7 @@ public class CatalystInstanceImpl implements CatalystInstance { mJavaScriptContextHolder = new JavaScriptContextHolder(getJavaScriptContext()); } + @DoNotStrip private static class BridgeCallback implements ReactCallback { // We do this so the callback doesn't keep the CatalystInstanceImpl alive. // In this case, the callback is held in C++ code, so the GC can't see it @@ -166,7 +167,10 @@ public class CatalystInstanceImpl implements CatalystInstance { public void onBatchComplete() { CatalystInstanceImpl impl = mOuter.get(); if (impl != null) { - impl.mNativeModuleRegistry.onBatchComplete(); + impl.mNativeModulesQueueThread.runOnQueue( + () -> { + impl.mNativeModuleRegistry.onBatchComplete(); + }); } } diff --git a/packages/react-native/ReactAndroid/src/main/jni/react/jni/CatalystInstanceImpl.cpp b/packages/react-native/ReactAndroid/src/main/jni/react/jni/CatalystInstanceImpl.cpp index 374e1c09c55..8c14b71293e 100644 --- a/packages/react-native/ReactAndroid/src/main/jni/react/jni/CatalystInstanceImpl.cpp +++ b/packages/react-native/ReactAndroid/src/main/jni/react/jni/CatalystInstanceImpl.cpp @@ -7,12 +7,8 @@ #include "CatalystInstanceImpl.h" -#include #include #include -#include -#include -#include #include #include @@ -34,7 +30,6 @@ #include -#include "CxxModuleWrapper.h" #include "JReactCxxErrorHandler.h" #include "JReactSoftExceptionLogger.h" #include "JavaScriptExecutorHolder.h" @@ -47,24 +42,16 @@ namespace facebook::react { namespace { -class Exception : public jni::JavaClass { - public: -}; - class JInstanceCallback : public InstanceCallback { public: - explicit JInstanceCallback( - alias_ref jobj, - std::shared_ptr messageQueueThread) - : jobj_(make_global(jobj)), - messageQueueThread_(std::move(messageQueueThread)) {} + explicit JInstanceCallback(alias_ref jobj) + : jobj_(make_global(jobj)) {} void onBatchComplete() override { - messageQueueThread_->runOnQueue([this] { - static auto method = ReactCallback::javaClassStatic()->getMethod( - "onBatchComplete"); - method(jobj_); - }); + jni::ThreadScope guard; + static auto method = + ReactCallback::javaClassStatic()->getMethod("onBatchComplete"); + method(jobj_); } void incrementPendingJSCalls() override { @@ -86,7 +73,6 @@ class JInstanceCallback : public InstanceCallback { private: global_ref jobj_; - std::shared_ptr messageQueueThread_; }; } // namespace @@ -201,7 +187,7 @@ void CatalystInstanceImpl::initializeBridge( moduleMessageQueue_)); instance_->initializeBridge( - std::make_unique(callback, moduleMessageQueue_), + std::make_unique(callback), jseh->getExecutorFactory(), std::make_unique(jsQueue), moduleRegistry_); diff --git a/packages/react-native/ReactAndroid/src/main/jni/react/jni/CatalystInstanceImpl.h b/packages/react-native/ReactAndroid/src/main/jni/react/jni/CatalystInstanceImpl.h index 7c88f0b6949..f1bbd95afce 100644 --- a/packages/react-native/ReactAndroid/src/main/jni/react/jni/CatalystInstanceImpl.h +++ b/packages/react-native/ReactAndroid/src/main/jni/react/jni/CatalystInstanceImpl.h @@ -13,7 +13,6 @@ #include #include -#include "CxxModuleWrapper.h" #include "JMessageQueueThread.h" #include "JRuntimeExecutor.h" #include "JRuntimeScheduler.h"