uni-app uni.chooseImage 相册选完图片返回上个页面会黑屏卡死

uni-app uni.chooseImage 相册选完图片返回上个页面会黑屏卡死

产品分类:

uniapp/App

PC开发环境

操作系统 版本号
Mac 10.12.6

手机环境

系统 版本号 厂商 机型
Android Android 9.0 vivo vivo Y91

开发工具

工具 类型 版本号
HBuilderX 正式 3.99

页面信息

类型 版本
vue vue2

打包方式

云端

项目创建方式

HBuilderX

示例代码:

uni.chooseImage({
count: 1,
sizeType: ['compressed'],
sourceType: ['album'],
success(res) {
console.log(res)
},
fail(err) {
console.log(err)
},
complete(e) {
console.log(e)
}
})

操作步骤:

选择相册–>勾选图片–>回到上个页面–>黑屏卡死

预期结果:

选完照片回到上个页面,不黑屏卡死

实际结果:

选完照片回到上个页面,黑屏卡死

bug描述:

uni.chooseImage 选择完照片以后,黑屏,卡死了,只能重新杀掉程序后,重启才好,重启以后会好,这个问题不是必现的


更多关于uni-app uni.chooseImage 相册选完图片返回上个页面会黑屏卡死的实战教程也可以访问 https://www.itying.com/category-93-b0.html

1 回复

更多关于uni-app uni.chooseImage 相册选完图片返回上个页面会黑屏卡死的实战教程也可以访问 https://www.itying.com/category-93-b0.html


在使用 uni.chooseImage 选择图片后,返回上一个页面出现黑屏或卡死的情况,可能是由于以下原因导致的:

1. 内存泄漏或资源未释放

  • 在选择图片后,某些资源(如图片数据、内存占用等)可能没有被正确释放,导致页面无法正常渲染。
  • 解决方法:确保在页面销毁时,释放所有不必要的资源。可以在 onUnload 生命周期钩子中手动释放资源。

2. 页面堆栈问题

  • uni.chooseImage 可能会触发页面的重新渲染或堆栈混乱,导致页面无法正常返回。
  • 解决方法:尝试使用 uni.navigateBackuni.redirectTo 来手动控制页面跳转逻辑,避免堆栈混乱。

3. 图片处理耗时

  • 如果选择的图片过大或处理逻辑复杂,可能会导致页面渲染卡顿或黑屏。
  • 解决方法:优化图片处理逻辑,使用异步操作或分片处理大图片。可以使用 uni.compressImage 对图片进行压缩。

4. 页面生命周期问题

  • 页面在返回时可能没有正确执行生命周期钩子(如 onShowonHide),导致页面无法正常渲染。
  • 解决方法:检查页面生命周期钩子中的逻辑,确保在 onShow 中重新初始化页面数据。

5. uni-app 版本问题

  • 某些版本的 uni-app 可能存在兼容性问题,导致 uni.chooseImage 后页面无法正常返回。
  • 解决方法:升级 uni-app 到最新版本,或使用其他图片选择插件(如 uni.chooseMedia)。

6. 异步操作未完成

  • 如果在 uni.chooseImage 的回调中进行异步操作(如上传图片),可能会导致页面在异步操作未完成时返回,从而出现黑屏。
  • 解决方法:确保所有异步操作完成后再返回页面,可以使用 Promiseasync/await 来控制流程。

示例代码:

uni.chooseImage({
  count: 1,
  success: async (res) => {
    const tempFilePaths = res.tempFilePaths;
    // 处理图片逻辑
    await someAsyncOperation(tempFilePaths[0]);
    // 返回上一个页面
    uni.navigateBack();
  },
  fail: (err) => {
    console.error('选择图片失败', err);
  }
});
回到顶部