DCloud_heavensoft
DCloud_heavensoft
  • 发布:2019-05-09 21:47
  • 更新:2020-01-10 10:20
  • 阅读:4749

ios内存不足导致白屏、闪退的问题解决方案

分类:uni-app

原因

任何手机设备上,当手机内存不足时,os都会回收资源。一般是先回收后台打开的资源。如果当前应用占用的资源过高,当前应用也有可能崩溃。
尤其是在调用摄像头点击拍照时,手机内存占用会达到一个峰值,此时较容易出问题。

iOS上当内存不足时,根据uiwebview和wkwebview的不同,它自身有不同的回收策略。

  • 如果是uiwebview的app(常见于5+app),内存不足时整个app会崩溃,即闪退。
  • 如果是wkwebview的app(uni-app和wap2app在iOS上默认就是wkwebview),内存不足时,单个wkwebview会崩溃。也就是所谓的应用还在,而页面白屏。

这个问题在所有使用wkwebview的应用都会出现,比如微信的公众号网页里也存在。在微信小程序里,它做了一个自动恢复手段,可以让jscore存储数据状态,崩溃的wkwebview自动恢复。所以在遇到问题时,会白一下然后恢复渲染。

解决方案

  • 推荐使用uni-app的自定义组件编译模式,因为引入了独立的jscore处理数据状态,jscore不会崩溃,所以官方在HBuilderX 1.9.5+,新增了自动的白屏恢复能力。请老版用户升级到新版。并尽快淘汰掉非自定义组件模式。另外HBuilderX 2.2.5-2.3.3版本的首页tabbar有个bug,会造成白屏问题。在HBuilderX 2.3.4起已经修复。
  • uni-app中也可以使用nvue来避免这个问题,nvue页面不会出现内存不足引发的白屏崩溃。
  • uni-app的非自定义组件编译模式的开发者,请尽快升级到自定义组件模式。当HBuilderX发布2.0时,云打包机将不再支持1.8的打包。并且2019年11月1日后的版本,会删除非自定义组件的支持。
  • 5+app、wap2app,一方面注意前端代码写法,减低内存使用。另外HBuilder2.3.4+开始支持配置WKWebview内核奔溃是重新启动应用还是重新加载页面的配置,详情参考:https://ask.dcloud.net.cn/article/36540

在前端减少内存使用的注意

最重要的注意,就是图片渲染,尤其是大图片。

在页面上不要渲染多张大图,比如从摄像头或相册选择多张图,并缩放尺寸渲染在页面上,虽然肉眼看起来手机屏幕上是几张小图,但实际上是多张大图只是被缩小,这种情况非常耗费内存。一张图片3m,9张这样的大图同时渲染到屏幕上,什么手机都受不了。
一个缩略图控制在几k或十几k,才是合理的。

详情页面展现多张大图并不受影响。如果图片滚动在屏幕外,os内存不足时也会自动收回这些屏幕外图片占用的渲染资源,最吃资源的就是同屏渲染多张大图。

1 关注 分享
253957964@qq.com

要回复文章请先登录注册

许萌

许萌

我现在的状况是这样的登录进入tabBar,会先渲染资源,然后闪白屏,2秒钟之后再次渲染页面, 不知道这是怎么回事,只有登录完之后会这样, 版本2.4.6
2020-01-10 10:20
yiqiqi@vip.qq.com

yiqiqi@vip.qq.com

回复 DCloud_heavensoft:
5+ 调用gallery选取图片后返回的路径不能作为预览图使用吗? file:/// 返回这种类型路径
2019-12-19 17:39
3680853@qq.com

3680853@qq.com

就是白屏。需要自动恢复功能
2019-10-30 03:28
1131895059@qq.com

1131895059@qq.com

回复 DCloud_heavensoft:
现在UIWebview模式是不是上不了线了 昨天更换成这个模式测试没有bug了 但是上线一直构建不了版本
2019-10-17 09:32
DCloud_heavensoft

DCloud_heavensoft (作者)

回复 1131895059@qq.com:
当然有
2019-10-16 21:15
1131895059@qq.com

1131895059@qq.com

回复 DCloud_heavensoft:
5+ app 里面没有这个配置吧
2019-10-16 19:35
DCloud_heavensoft

DCloud_heavensoft (作者)

回复 1131895059@qq.com:
那就切回UIWebview吧,目前也是能上线的
2019-10-15 15:14
1131895059@qq.com

1131895059@qq.com

回复 DCloud_heavensoft:
5+app 真机真机测试和打包完成上线的 打开app 闪一下登录页然后就白屏,HBuilderX2.3.4 内存还有200G 还有另外一个问题 最新版 ios 上面 canvas.toDataURL无法使用 也是5+app
2019-10-15 14:51
DCloud_heavensoft

DCloud_heavensoft (作者)

回复 1131895059@qq.com:
uni-app?tab页面白屏?升级到HBuilderX 2.3.4
2019-10-15 14:05
1131895059@qq.com

1131895059@qq.com

最新版 苹果X白屏 有的APP不会 有的会
2019-10-15 10:42