APP挂在后台后,10分钟、半分钟返回APP图片都没有问题,过了快一个小时后进入APP后大部分图片资源都缺失了变空白了
- 发布:2024-07-22 15:26
- 更新:2024-12-23 15:08
- 阅读:542
产品分类: uniapp/App
PC开发环境操作系统: Windows
PC开发环境操作系统版本号: Win11
HBuilderX类型: 正式
HBuilderX版本号: 4.17
手机系统: iOS
手机系统版本号: iOS 17
手机厂商: 苹果
手机机型: iPhone15 Pro
页面类型: vue
vue版本: vue3
打包方式: 云端
项目创建方式: HBuilderX
操作步骤:
预期结果:
图片资源不会消失白屏
图片资源不会消失白屏
实际结果:
图片变成空白了
图片变成空白了
bug描述:
uniapp IOS 退出后台挂了快一个小时 在进入APP后部分图片变成空白了
这个问题基本确定就是内存使用过大时系统会将处于后台中的 webview 进程终止,回到前台后uniapp做了webview白屏恢复的机制,但是不能保证所有内容都能正常恢复,可以加个逻辑判断一下 image 组件的 src 是否存在,是否能正常获取图片的size,如果不能正常获取就直接刷新一下当前页面试试看
目前通过以下兼容方案,处理了页面 图片或样式消失的问题。测试有效。
// app.vue
onHide() {
console.log("App Hide");
useAppStore().setHide(true)
},
async onShow() {
// 获取当前页面路由
let page = currentPage()
let route = page['__route__']
// 判断页面是否是通过后台进入,并且是ios平台
if(useAppStore().isHide?.val && $platform.os == 'ios') {
let hideTime = useAppStore().isHide?.time
// 页面隐藏30分钟内,不重新加载,时间是随意加的,ios预计是2小时左右会显示不出来图片
if(Date.now() - hideTime < 30 * 60 * 1000) {
return
}
useAppStore().setHide(false)
let nav_type = route == 'page/index/index' ? 'reLaunch' : 'redirectTo'
navigateTo({path: `/${route}`}, nav_type)
}
},