DCloud_heavensoft
DCloud_heavensoft
  • 发布:2019-05-09 21:47
  • 更新:5 天前
  • 阅读:15965

App平台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不会崩溃,所以官方采用了和微信小程序一致的策略,补充自动的白屏恢复能力。
  • uni-app中也可以使用nvue来避免这个问题,nvue页面不会出现内存不足引发的白屏崩溃。
  • 5+app、wap2app,一方面注意前端代码写法,减低内存使用。另外HBuilder2.3.4+开始支持配置WKWebview内核奔溃是重新启动应用还是重新加载页面的配置,详情参考:https://ask.dcloud.net.cn/article/36540。但整体而言,5+app和wap2app在WKWebview下问题很多,还有各种跨域限制,还是建议开发者尽快升级为uni-app。

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

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

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

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

7 关注 分享
253957964@qq.com 201457003@qq.com 734665222@qq.com sxw_1994@163.com 2391164772@qq.com 505378037@qq.com 穷鬼溪风

要回复文章请先登录注册

456vv

456vv

你不能为自己的APP省内存,能吃就吃。其它APP也好不到哪里去。
5 天前
2305079389@qq.com

2305079389@qq.com

已有解决办法
uni.getSystemInfo({
success: (res) => {
if (res.platform == 'ios') {
const query = uni.createSelectorQuery().in(this);
var isRecovery = true;
query
.select('#containerId')
.boundingClientRect(data => {
isRecovery = false;
})
.exec();
var timer = setTimeout(() => {
if (isRecovery) {
uni.reLaunch({
url:'/pages/tabbar/msg/msg'
})
clearTimeout(timer);
timer = null;
}
}, 500)
}
},
})
2021-02-03 13:57
忘记我是谁

忘记我是谁

这咋弄啊 经常白屏 怎么解决这个问题啊? 已经上架的app,打开后回到桌面,玩其他的软件 玩一会再打开app 就白屏了 也恢复不了(iphone 11 pro)。。我想的是 “如果发现白屏(内存不足)了 可以自动重启就好了”
2021-02-02 16:47
thinkive

thinkive

回复 DCloud_UNI_GSQ :
这个问题,需要一个解决方案啊,我5个tabbar,2个nvue,,经常退回到后台,一段时间再切换回来,另外2个界面不定时白屏
2021-01-25 20:17
122517976@qq.com

122517976@qq.com

回复 穷鬼溪风 :
没有呢
2020-12-25 12:19
穷鬼溪风

穷鬼溪风

回复 122517976@qq.com :
解决了吗 我这的app 也出现了同样的问题
2020-12-24 09:57
122517976@qq.com

122517976@qq.com

回复 DCloud_UNI_GSQ :
之前我的手机没有出现问题,后面我发现了,在后台多运行APP,比如直播软件之类的,消耗后台运行内存,这个时候就能复现白屏问题。
2020-12-15 10:31
122517976@qq.com

122517976@qq.com

回复 DCloud_UNI_GSQ :
如何联系,我的QQ120409743
2020-12-15 10:29
DCloud_UNI_GSQ

DCloud_UNI_GSQ

回复 122517976@qq.com :
如果你有空的话,希望可以联系一下
2020-12-14 14:40
DCloud_UNI_GSQ

DCloud_UNI_GSQ

回复 122517976@qq.com :
需要了解一些情况,目前还未成功联系到反馈问题的人。
2020-12-14 14:34