问题描述:在开发过程中,发现按导航回退时,程序会崩溃。

调查结果:

        经调查发现,导致程序崩溃的原因是因为地图功能使用的 WebView 组件导致的问题,大量测试之后,终于再现了这个问题。

        如果 WebView 组件,在屏幕上显示过,就可以成功回退到上一页。如果 WebView 组件仅仅只是渲染在了 可视化区域外。并没有显示过。导航栏的回退功能就会导致程序崩溃。

原因:调查过程中,实在没有查到什么原因导致的这种现象,我只能初步判断出

  1. WebView 组件与 Native Navigation组件之间可能有冲突
  2. WebView 组件有Bug。
  3. WebView 组件与 Android 环境之间出现了问题。(个人更倾向于这种,因为并非所有智能手机都会出现这个问题

解决方案:

        1. 将可视化区域外的内容隐藏 hidden (个人研究出的方案,应该多数人不适合使用

        2. 延迟加载。

                我使用延迟加载失败了,因为组件调用 setInterval 时,报了个undefined。大概是因为调用该方法时 set方法还没有生成吧。思路应该就是,将可视化区域内的内容延迟加载,这样就能先加载webview。暴露在可视化区域,然后渲染其他内容,将webview挤出可视化区域,由于已经在可视化区域中显示过了,这样退出就不会闪退了、

我的 WebView 组件是包裹在了 <ScrollView> 组件之内。所以直接使用属性将可视化区域外的内容hidden就可以了。所以才说不适合所有人。如果想采用该方法,需要用什么组件包裹一下,然后隐藏掉

使用属性 removeClippedSubviews

<ScrollView
  h="90%"
  borderBottomWidth={1}
  borderBottomColor={'#d0d1d3'}
  removeClippedSubviews>
    ......

  <WebView/>

</ScrollView>

Logo

腾讯云面向开发者汇聚海量精品云计算使用和开发经验,营造开放的云计算技术生态圈。

更多推荐