最近遇到个奇怪的问题,以前本来正常使用的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/>
</View>

只要不给View设置任何布局,就会实现隐藏的效果,但是这种写法会导致闪退。有没有大佬知道为什么的?麻烦评论解答一下。

最终解决办法,就是不要用上面的写法,直接把webview显示出来,就没有这个问题了。不知道产生这个的原因会不会是webview组件的BUG。

修改后的写法:

<View style={{
                flex: 0,
                flexDirection: 'row',
                justifyContent: 'center',
                alignItems: 'center',
                height: 1,
                width: 1,
            }}>
 		<WebView/>
</View>

求更好的写法!

Logo

开源鸿蒙跨平台开发社区汇聚开发者与厂商,共建“一次开发,多端部署”的开源生态,致力于降低跨端开发门槛,推动万物智联创新。

更多推荐