diff --git a/ReactAndroid/src/main/java/com/facebook/react/bridge/BaseJavaModule.java b/ReactAndroid/src/main/java/com/facebook/react/bridge/BaseJavaModule.java index 283c365e910..a8bf93676f4 100644 --- a/ReactAndroid/src/main/java/com/facebook/react/bridge/BaseJavaModule.java +++ b/ReactAndroid/src/main/java/com/facebook/react/bridge/BaseJavaModule.java @@ -61,16 +61,18 @@ public abstract class BaseJavaModule implements NativeModule { } @Override - public void onCatalystInstanceDestroy() { - // do nothing - } + public void onCatalystInstanceDestroy() {} public boolean hasConstants() { return false; } - // Cleanup Logic for TurboModules + /** + * The CatalystInstance is going away with Venice. Therefore, the TurboModule infra introduces the + * invalidate() method to allow NativeModules to clean up after themselves. + */ + @Override public void invalidate() { - // Do nothing + onCatalystInstanceDestroy(); } } diff --git a/ReactAndroid/src/main/java/com/facebook/react/bridge/CxxModuleWrapperBase.java b/ReactAndroid/src/main/java/com/facebook/react/bridge/CxxModuleWrapperBase.java index 536434c4105..1d2814a1d54 100644 --- a/ReactAndroid/src/main/java/com/facebook/react/bridge/CxxModuleWrapperBase.java +++ b/ReactAndroid/src/main/java/com/facebook/react/bridge/CxxModuleWrapperBase.java @@ -38,7 +38,10 @@ public class CxxModuleWrapperBase implements NativeModule { } @Override - public void onCatalystInstanceDestroy() { + public void onCatalystInstanceDestroy() {} + + @Override + public void invalidate() { mHybridData.resetNative(); } diff --git a/ReactAndroid/src/main/java/com/facebook/react/bridge/ModuleHolder.java b/ReactAndroid/src/main/java/com/facebook/react/bridge/ModuleHolder.java index 0398c85a473..ad5709a07e0 100644 --- a/ReactAndroid/src/main/java/com/facebook/react/bridge/ModuleHolder.java +++ b/ReactAndroid/src/main/java/com/facebook/react/bridge/ModuleHolder.java @@ -107,7 +107,7 @@ public class ModuleHolder { public synchronized void destroy() { if (mModule != null) { - mModule.onCatalystInstanceDestroy(); + mModule.invalidate(); } } diff --git a/ReactAndroid/src/main/java/com/facebook/react/bridge/NativeModule.java b/ReactAndroid/src/main/java/com/facebook/react/bridge/NativeModule.java index 16939d03209..11f7117f2e9 100644 --- a/ReactAndroid/src/main/java/com/facebook/react/bridge/NativeModule.java +++ b/ReactAndroid/src/main/java/com/facebook/react/bridge/NativeModule.java @@ -47,6 +47,13 @@ public interface NativeModule { */ boolean canOverrideExistingModule(); - /** Called before {CatalystInstance#onHostDestroy} */ + /** + * Allow NativeModule to clean up. Called before {CatalystInstance#onHostDestroy} + * + * @deprecated use {@link #invalidate()} instead. + */ void onCatalystInstanceDestroy(); + + /** Allow NativeModule to clean up. Called before {CatalystInstance#onHostDestroy} */ + void invalidate(); } diff --git a/ReactAndroid/src/main/java/com/facebook/react/turbomodule/core/TurboModuleManager.java b/ReactAndroid/src/main/java/com/facebook/react/turbomodule/core/TurboModuleManager.java index 39147e62be9..c0e4d8fe109 100644 --- a/ReactAndroid/src/main/java/com/facebook/react/turbomodule/core/TurboModuleManager.java +++ b/ReactAndroid/src/main/java/com/facebook/react/turbomodule/core/TurboModuleManager.java @@ -326,8 +326,7 @@ public class TurboModuleManager implements JSIModule, TurboModuleRegistry { final TurboModule turboModule = getModule(moduleName, moduleHolder, false); if (turboModule != null) { - // TODO(T48014458): Rename this to invalidate() - ((NativeModule) turboModule).onCatalystInstanceDestroy(); + turboModule.invalidate(); } }