最近遇到个奇怪的问题,以前本来正常使用的APP(0.63.2),自从升级到0.63.3并且引用的组件全部升级。在android下经常闪退。但是ios下很正常没有任何问题。各种排除法,最后定位是隐藏的webview出现了问题。
环境信息macOS Catalina 10.15.6
node 14.2.0
pod 1.8.4
react-native 0.63.3
react 16.13.1
xcode 12.1
解决办法
问题出现原因: 经过大量的测试,花了我一几乎一周的时间啊,把同事写的组件,和依赖的组件各种删除测试,最终才发现。原来一直在想是不是代码问题导致内存泄露了? 后来才发现: 之前为了实现一些需求,把webview组件隐藏起来(用户看不到)执行一些预加载的任务。 只要有隐藏的webview组件就会很大概率闪退。 代码结构如下:
只要不给View设置任何布局,就会实现隐藏的效果,但是这种写法会导致闪退。有没有大佬知道为什么的?麻烦评论解答一下。
最终解决办法,就是不要用上面的写法,直接把webview显示出来,就没有这个问题了。不知道产生这个的原因会不会是webview组件的BUG。
修改后的写法:
{
求更好的写法!