React Native - 模块生命周期 - 在“重新加载”上处理资源

Wal*_*ira 5 android bluetooth react-native react-native-android

我正在使用 react native 模块(https://github.com/ruse​​l1989/react-native-bluetooth-serial)与 Arduino 进行蓝牙通信。

一切正常。但是当我按下“重新加载”或由于启用了实时重新加载而重新加载应用程序时,onDestroy不会调用模块的方法。因此,套接字(和流)没有正确处理。

重新加载完成后,我无法再打开蓝牙插座。它需要我禁用和启用蓝牙,或重新启动应用程序。

当我重新加载我的应用程序时,是否有我可以实现的蚂蚁回调或方法可以正确处理这些套接字?

Sud*_*Plz 5

好的,在本机代码中花费时间后,我找到了答案:

在 iOS 上:

您必须实现一个invalidate在您的RCTBridgeModule实现中调用的方法:

每当上下文被销毁(应用程序被重新加载)时,它就会运行,它看起来像这样:

- (void)invalidate
{
    // disconnect bluetooth here
}
Run Code Online (Sandbox Code Playgroud)

这是我如何在 iOS 上执行此操作的示例

在安卓上:

你必须onCatalystInstanceDestroy在你的内部实现这个方法ReactContextBaseJavaModule,它看起来像这样:

@Override
public void onCatalystInstanceDestroy() {
    // disconnect bluetooth here
}
Run Code Online (Sandbox Code Playgroud)

这是我如何在 Android 上执行此操作的示例