diff --git a/ReactAndroid/src/main/java/com/facebook/react/NativeModuleRegistryBuilder.java b/ReactAndroid/src/main/java/com/facebook/react/NativeModuleRegistryBuilder.java index 4055ec671..2e2be320b 100644 --- a/ReactAndroid/src/main/java/com/facebook/react/NativeModuleRegistryBuilder.java +++ b/ReactAndroid/src/main/java/com/facebook/react/NativeModuleRegistryBuilder.java @@ -113,18 +113,10 @@ public class NativeModuleRegistryBuilder { } public NativeModuleRegistry build() { - ArrayList batchCompleteListenerModules = new ArrayList<>(); + ArrayList batchCompleteListenerModules = new ArrayList<>(); for (Map.Entry, ModuleHolder> entry : mModules.entrySet()) { - Class type = entry.getKey(); - if (OnBatchCompleteListener.class.isAssignableFrom(type)) { - final ModuleHolder moduleHolder = entry.getValue(); - batchCompleteListenerModules.add(new OnBatchCompleteListener() { - @Override - public void onBatchComplete() { - OnBatchCompleteListener listener = (OnBatchCompleteListener) moduleHolder.getModule(); - listener.onBatchComplete(); - } - }); + if (OnBatchCompleteListener.class.isAssignableFrom(entry.getKey())) { + batchCompleteListenerModules.add(entry.getValue()); } } diff --git a/ReactAndroid/src/main/java/com/facebook/react/cxxbridge/ModuleHolder.java b/ReactAndroid/src/main/java/com/facebook/react/cxxbridge/ModuleHolder.java index 449fbcf3b..42ab92753 100644 --- a/ReactAndroid/src/main/java/com/facebook/react/cxxbridge/ModuleHolder.java +++ b/ReactAndroid/src/main/java/com/facebook/react/cxxbridge/ModuleHolder.java @@ -67,6 +67,10 @@ public class ModuleHolder { } } + public synchronized boolean isInitialized() { + return mModule != null; + } + public synchronized void destroy() { if (mModule != null) { mModule.onCatalystInstanceDestroy(); diff --git a/ReactAndroid/src/main/java/com/facebook/react/cxxbridge/NativeModuleRegistry.java b/ReactAndroid/src/main/java/com/facebook/react/cxxbridge/NativeModuleRegistry.java index c8a02744c..f20d0d32c 100644 --- a/ReactAndroid/src/main/java/com/facebook/react/cxxbridge/NativeModuleRegistry.java +++ b/ReactAndroid/src/main/java/com/facebook/react/cxxbridge/NativeModuleRegistry.java @@ -15,7 +15,6 @@ import java.util.List; import java.util.Map; import com.facebook.infer.annotation.Assertions; -import com.facebook.react.bridge.BaseJavaModule; import com.facebook.react.bridge.NativeModule; import com.facebook.react.bridge.OnBatchCompleteListener; import com.facebook.react.bridge.ReactMarker; @@ -28,11 +27,11 @@ import com.facebook.systrace.Systrace; public class NativeModuleRegistry { private final Map, ModuleHolder> mModules; - private final ArrayList mBatchCompleteListenerModules; + private final ArrayList mBatchCompleteListenerModules; public NativeModuleRegistry( Map, ModuleHolder> modules, - ArrayList batchCompleteListenerModules) { + ArrayList batchCompleteListenerModules) { mModules = modules; mBatchCompleteListenerModules = batchCompleteListenerModules; } @@ -92,8 +91,10 @@ public class NativeModuleRegistry { } public void onBatchComplete() { - for (int i = 0; i < mBatchCompleteListenerModules.size(); i++) { - mBatchCompleteListenerModules.get(i).onBatchComplete(); + for (ModuleHolder moduleHolder : mBatchCompleteListenerModules) { + if (moduleHolder.isInitialized()) { + ((OnBatchCompleteListener) moduleHolder.getModule()).onBatchComplete(); + } } }