当使用react-router-native卸载React组件时,Android UI组件仍在运行

Dan*_*son 4 react-router react-native

当将我的应用程序的导航处理从react-native-router-flux移动到react-router-native时,我似乎发现了如何处理我的应用程序的本机UI组件的问题。

我的应用程序有几个动画数据图,我用 Java 实现了这些动画数据图,并将其作为Native UI Components导入到 React Native 中。可视化由后台线程上的一些资源匮乏的可运行程序提供支持,这些线程在加载 ui 组件时启动。之前,我通过将本机 ui 组件 (isVisible) 的 prop 更改为 false 来停止这些线程。

然而,当使用react-router-native(在转换时卸载组件)离开包含这些本机ui组件之一的屏幕时,即使在react组件中调用了componentWillUnmount,为我的图提供动力的本机线程仍会继续运行。

我尝试通过在 componentWillUnmount 中将本机 ui 组件 prop isVisible 更改为 false 来关闭它们,但即使这样也不能解决问题。也许是因为在 componentWillUnmount 之后没有该组件的另一个渲染?

有谁知道如何在卸载其父组件时强制关闭本机 UI 组件及其所有进程?

Dan*_*son 6

经过一段时间的摆弄后,我想出了一个解决方案,我认为我应该在这里分享。

它没有包含在 React Native 文档中,但是onDropViewInstance每当卸载 Native Java UI 组件时,React SimpleViewManager 类中就会调用一个名为的函数。

为了解决某些线程仍在运行的问题,我所要做的就是显式停止该onDropViewInstance函数中的这些线程。