uni-app app端后台待久了切回前台出现报错 webviewReady[6][3] not match __ERROR

uni-app app端后台待久了切回前台出现报错 webviewReady[6][3] not match __ERROR

开发环境 版本号 项目创建方式
Windows Windiws10 ltsc HBuilderX
app切换后台后,待几分钟,重新打开app,空白,报webviewReady[6][3] not match __ERROR

预期结果:
app切换后台后,待几分钟,重新打开app,不会空白,也不会报错

实际结果:
app切换后台后,待几分钟,重新打开app,空白,报错

bug描述:
自从昨天更新编译器最新版本后,app切换后台后,待几分钟,重新打开app,打开页空白几秒并且在控制器报  webviewReady[6][3] not match __ERROR  
当然不同页面打开 webviewReady[6][3] not match __ERROR 不止6和3,还有其他的!!!!!!  

更多关于uni-app app端后台待久了切回前台出现报错 webviewReady[6][3] not match __ERROR的实战教程也可以访问 https://www.itying.com/category-93-b0.html

26 回复

用你的设备使用内置的基座是否能复现此问题?

更多关于uni-app app端后台待久了切回前台出现报错 webviewReady[6][3] not match __ERROR的实战教程也可以访问 https://www.itying.com/category-93-b0.html


回复 小小白啊: 运行的什么项目,能否提供一下,或者用官方的 uniapp 示例工程能否复现

回复 DCloud_iOS_XHY: 就运行在app端的项目。好的,我去复现一下。感谢处理

回复 小小白啊: 你好能否提供一下复现问题的工程?使用 uniapp示例项目目前还没有复现出来这个问题

回复 DCloud_iOS_XHY: 您好,感谢处理,我在 uniapp示例项目中 随便找个页面并且加个定时器(模拟网络请求)切换后台,在其他app待了几分钟后,重新回去,会复现,但是不是百分比复现出来。

回复 小小白啊: 把这个修改后的示例发我一下吧,描述一下具体是哪个页面,我在按照你的方法测试一下试试看

回复 DCloud_iOS_XHY: 您好,先不打扰您处理其他问题先,我复现的demo,时有时无,等我可以准确复现出来,再@您。

回复 小小白啊: 你好,请问你现在怎么解决的

回复 b***@163.com: 没有解决,这个 提示 偶发性的,就很难提供demo 给官方修复。

@DCloud_iOS_XHY 现在模拟出来了,在vue3环境下,只要你首页引入本地稍微大一点的图片(两百k)和一些本地图标,切换后台的时候,稍等几分钟,再激活app,就出现 webviewReady[4][3] not match __ERROR 错误。并且白屏!!!!!

测试的工程上传一下

回复 DCloud_iOS_XHY: 上传了~

回复 小小白啊: 反复测试几次也没能复现此问题

回复 DCloud_iOS_XHY: 不好意思,我再努力调试一个demo出来

回复 DCloud_iOS_XHY: 已经重新提了一个demo,请查看

@DCloud_iOS_XHY 你好,我重新弄了一个demo,已上传替换。我测试了好几轮,可以复现。 流程是:运行后,切换后台,去操作其他app,然后几分钟再切换回来。就会出现webviewReady[3][2] not match __ERROR 错误,然后白屏~

收到,我们先测试一下,会回复你

回复 DCloud_iOS_XHY: 你好,有结果了吗?如果有结果的话,就把问题提上日程~

回复 小小白啊: 你好,提供的demo运行后直接就白屏,先解决一下逻辑问题

回复 DCloud_iOS_XHY: 你好,我重新上传了,我特地删除本地的然后重新运行项目,是可以跑起来的。问题也可以测试出来,麻烦你再看看

回复 小小白啊: 帖子写的是 vue2,项目是vue3的,不过我按照你说的方式测试还没没有复现问题,反复测试了几次都没复习。测试机型 iPhoneXR 15.3

回复 DCloud_iOS_XHY: 在vue3项目中出现的频率比较高,我测试机型iPhone8 15.4.1 、iPhone12pro max 15.4.1 都可以测试出来

@DCloud_iOS_XHY 你好,请问你看到了吗?

这个问题解决了吗

这个报错通常是由于应用在后台时,系统可能回收了部分WebView资源,导致切回前台时WebView实例状态不一致。

主要原因:

  1. 系统内存管理机制在应用后台时回收了WebView
  2. WebView准备状态与预期不匹配
  3. 多WebView实例间通信异常

解决方案:

1. 检查manifest.json配置:

{
  "app-plus": {
    "optimization": {
      "webview": {
        "memory": {
          "max": 256
        }
      }
    }
  }
}

2. 优化页面生命周期管理:onHideonShow中添加状态管理:

onHide() {
  this.isBackground = true
},
onShow() {
  if (this.isBackground) {
    // 执行恢复逻辑
    this.reloadIfNeeded()
  }
  this.isBackground = false
}

3. 添加WebView错误处理:

// 在App.vue的onLaunch中
uni.onWebviewError((error) => {
  console.error('WebView错误:', error)
  // 可以尝试重新加载页面
  if (error.code === 'WEBVIEW_READY_ERROR') {
    setTimeout(() => {
      uni.reLaunch({ url: '/' })
    }, 1000)
  }
})

4. 检查页面跳转逻辑: 避免在应用恢复时立即执行复杂的页面跳转,可以添加延迟:

onShow() {
  setTimeout(() => {
    // 执行页面初始化
  }, 300)
}

5. 升级HBuilderX版本: 确保使用最新稳定版,这个问题在部分版本中已被修复。

6. 减少同时运行的WebView数量: 检查是否有多个WebView同时运行,适当减少并发数量。

临时解决方案: 在应用恢复时强制刷新当前页面:

onShow() {
  if (this.lastHideTime && Date.now() - this.lastHideTime > 60000) {
    this.$forceUpdate()
    // 或重新加载数据
  }
},
onHide() {
  this.lastHideTime = Date.now()
}
回到顶部