在将我的应用程序的导航处理从react- native -router-flux移动到react-router-native时,我似乎发现了一个问题,即如何处理我的应用程序的本机UI组件。
我的应用程序有几个动画数据图,我用Java语言实现了它们,并将它们作为Native UI Components导入到React Native中。可视化是由在加载ui组件时启动的后台线程上的一些耗费资源的可运行程序提供支持的。以前,我通过将本机ui组件(isVisible)的一个属性更改为false来停止这些线程。
但是,当使用react-router-native从包含这些本机ui组件之一的屏幕离开时(它会在转换时卸载组件),即使在react组件中调用了componentWillUnmount,支持我的绘图的本机线程也会继续运行。
我试图通过在componentWillUnmount中将原生ui组件属性isVisible更改为false来关闭它们,但即使这样也不能解决问题。也许是因为在componentWillUnmount之后没有该组件的另一个呈现?
有人知道如何在卸载父组件时强制关闭本机UI组件及其所有进程吗?
发布于 2017-06-13 00:57:45
在闲逛了一段时间后,我想出了一个解决方案,我认为我应该在这里分享。
它没有包含在React Native文档中,但是只要卸载Native Java UI组件,React SimpleViewManager类中就会调用一个名为onDropViewInstance的函数。
为了解决某些线程仍在运行的问题,我所要做的就是在onDropViewInstance函数中显式地停止这些线程。
https://stackoverflow.com/questions/44372612
复制相似问题