uni-app页面资源被回收后,无法自动恢复
uni-app页面资源被回收后,无法自动恢复
操作步骤:
- 多开几个占内存的app,反复切换
预期结果:
- 页面回收后,应该重新加载,自动恢复
实际结果:
- 页面在回收后,无法重新加载,不能自动恢复
bug描述:
- 页面在内存不足时,会白屏,并且,无法自动恢复
附件
信息表
类别 | 信息 |
---|---|
产品分类 | uniapp/App |
PC开发环境 | Mac |
PC操作系统版本 | 10.15.6 (19G73) |
HBuilderX类型 | 正式 |
HBuilderX版本 | 2.9.8 |
手机系统 | iOS |
手机系统版本 | IOS 14 |
手机厂商 | 苹果 |
手机机型 | iPhone8, iPhone11Pro, iPhone12Pro |
页面类型 | vue |
打包方式 | 离线 |
项目创建方式 | HBuilderX |
App下载地址 | 链接 |
更多关于uni-app页面资源被回收后,无法自动恢复的实战教程也可以访问 https://www.itying.com/category-93-b0.html
1 回复
更多关于uni-app页面资源被回收后,无法自动恢复的实战教程也可以访问 https://www.itying.com/category-93-b0.html
这是uni-app在iOS平台上常见的内存回收问题。当系统内存不足时,iOS会回收后台页面的WebView资源,而uni-app默认没有实现页面状态的自动恢复机制。
解决方案:
- 在pages.json中为页面配置"restartStrategy":“restart”,这会强制页面重新加载
- 实现onSaveInstanceState和onRestoreInstanceState生命周期,手动保存和恢复页面状态
- 对于重要页面,可以在onHide时保存关键数据到本地存储,在onShow时恢复
- 检查是否有内存泄漏,减少内存占用
示例代码:
export default {
onSaveInstanceState() {
return { key: this.dataValue }
},
onRestoreInstanceState(state) {
this.dataValue = state.key
}
}