小熊是安妮的
小熊是安妮的
  • 发布:2020-08-18 17:01
  • 更新:2021-02-19 17:16
  • 阅读:2408

uniapp开发的app端,使用plus加载一个webview页面,会时不时的造成app闪退

分类:uni-app

uniapp开发的app端,使用plus加了一个webview页面,但是这个页面进入了以后,会时不时的让app闪退,这个问题要怎么解决
如下图引入方式

html页面是一个3d的地球,如下图


页面加载项比较多,大约八九m的资源,每次进入一个任务详情都需要加载这个

现在就是使用了webview以后,会时不时造成app闪退,机型华为mate 30 5g的,运行内存什么的肯定没问题

2020-08-18 17:01 负责人:无 分享
已邀请:
DCloud_Android_ST

DCloud_Android_ST

HX什么版本?请提供一个简单的示例我们排查一下

  • 小熊是安妮的 (作者)

    0814的最新版的,示例是要什么样的,单个这个页面的源码还是

    2020-08-18 19:01

  • DCloud_Android_ST

    能复现问题的完整项目 附件可以仅管理员可见

    2020-08-18 19:19

  • 小熊是安妮的 (作者)

    这边后台会监听unipush的消息推送,然后进入首页以后会在后台添加一个setTimeout三秒获取一次定位,三十秒以后发一次请求给后台,这个是因为内存开销过大吗?

    2020-08-18 19:20

  • DCloud_Android_ST

    回复 小熊是安妮的: 我这边不知道报错原因所以无法帮你定位。你可以尝试排除法。删除部分逻辑看看是否还闪退

    2020-08-18 19:26

  • 小熊是安妮的 (作者)

    回复 DCloud_Android_ST: 好的,谢谢,这边文件太大,超过10mb了。发不了,我先看看吧,还有一个,webview在当前应用页面关闭的时候会被卸载掉吗?还是会堆积到后台,因为有很多操作都要打开webview

    2020-08-18 19:36

  • DCloud_Android_ST

    回复 小熊是安妮的: webview关闭就会被回收

    2020-08-18 19:48

huangvvvvvvv

huangvvvvvvv

解决了吗

1***@163.com

1***@163.com - 1

减少你这个webview页面的内存消耗
我不知道你用的什么加载的地图,我之前用的openlayers,当layer图层变多,会积累大量闭包,很容易闪退

  • 小熊是安妮的 (作者)

    Cesium的3d地球,默认使用的谷歌地图的,首页加载项很多,每次放大和缩小都会去请求图层界面

    2020-08-25 13:55

  • 1***@163.com

    回复 小熊是安妮的: 之前我的2d地图解决方法是,减少layer图层,也就是除了地图图层,就保留一个layer图层用来加载所有标注

    2020-08-26 09:16

  • 1***@qq.com

    可以直接用openlayer嘛,还是必须通过webview调用openlayer的页面

    2020-09-02 17:55

  • 1***@163.com

    回复 1***@qq.com: app不支持dom,必须通过webview去加载

    2020-09-03 09:05

Absorbed66c

Absorbed66c - 码农一枚

遇到同样的问题 使用了webview 直接卡死闪退

  • 小熊是安妮的 (作者)

    我减少使用了webview的次数,原先我在近六个页面中使用了webview嵌套,后续删除了四个,现在如果单独使用一个或者两个在后台堆积的话,暂时不会闪退,但我手机用的mate30测试的,低版本的手机,可能就不行了

    2021-02-19 17:02

小熊是安妮的

小熊是安妮的 (作者) - 小熊是安妮的

我的解决方法:
1.减少了webview的堆积频率,原先项目中如果打开webview页面的话,会在页面栈中堆积3个到四个webview,这个页面没有被销毁,可以使用 back 返回,应用页面高峰,后台栈中会有六个webview存在,百分百会复现闪退的情况

  1. webview耗费的内存,我原先webview有两个耗费大户,一个3d地球的加载,一个音视频的通讯,这两个,在同时运行的时候,基本运行一久,大概率就闪退了
  2. 减少应用页面的跳转层级

该问题目前已经被锁定, 无法添加新回复