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默认没有实现页面状态的自动恢复机制。

解决方案:

  1. 在pages.json中为页面配置"restartStrategy":“restart”,这会强制页面重新加载
  2. 实现onSaveInstanceState和onRestoreInstanceState生命周期,手动保存和恢复页面状态
  3. 对于重要页面,可以在onHide时保存关键数据到本地存储,在onShow时恢复
  4. 检查是否有内存泄漏,减少内存占用

示例代码:

export default {
  onSaveInstanceState() {
    return { key: this.dataValue }
  },
  onRestoreInstanceState(state) {
    this.dataValue = state.key
  }
}
回到顶部