uni-app 一拍照就导致应用重启了

uni-app 一拍照就导致应用重启了

# 操作步骤:
一拍照就导致应用重启了

# 预期结果:
一拍照不重启,显示图片

# 实际结果:
一拍照就导致应用重启了

# bug描述:
一拍照就导致应用重启了
开发环境 版本号 项目创建方式
Windows 10 HBuilderX
Android Android 10 小米mi 9 se
PC
手机

更多关于uni-app 一拍照就导致应用重启了的实战教程也可以访问 https://www.itying.com/category-93-b0.html

1 回复

更多关于uni-app 一拍照就导致应用重启了的实战教程也可以访问 https://www.itying.com/category-93-b0.html


问题分析:
根据你的描述,拍照后应用重启,这通常与内存溢出或相机资源释放不当有关。在 Android 10 设备上,相机占用内存较大,若未及时释放或图片处理不当,可能导致应用崩溃并自动重启。

可能原因及解决方案:

  1. 内存不足

    • 拍照时系统相机或应用占用内存过高,触发系统回收机制。
    • 建议:压缩图片后再处理,使用 uni.compressImage 对图片进行压缩,减少内存占用。
  2. 相机资源未释放

    • 拍照后未正确关闭相机,导致后续调用冲突。
    • 建议:在 uni.chooseImage 或相机 API 调用后,检查代码逻辑,确保回调完成后释放资源(如销毁相机实例)。
  3. 临时文件路径问题

    • 使用 tempFilePaths 时,若路径无效或文件过大,可能引发异常。
    • 建议:确认获取的临时路径有效,并尽快将文件转移到应用持久目录(如 uni.saveFile)。
  4. Android 10 权限适配

    • Android 10 对文件存储有更严格的限制,需确保应用有存储权限且适配作用域存储。
    • 建议:在 manifest.json 中配置 "requestLegacyExternalStorage": true(针对 Android 10 适配),并动态申请存储权限。

代码示例(关键部分):

// 1. 使用压缩图片
uni.chooseImage({
  count: 1,
  sourceType: ['camera'],
  success: (res) => {
    const tempFilePath = res.tempFilePaths[0];
    uni.compressImage({
      src: tempFilePath,
      quality: 80, // 压缩质量
      success: (compressedRes) => {
        // 处理压缩后的图片路径 compressedRes.tempFilePath
      }
    });
  }
});

// 2. 及时保存文件到本地
uni.saveFile({
  tempFilePath: tempFilePath,
  success: (savedRes) => {
    const savedFilePath = savedRes.savedFilePath;
    // 使用 savedFilePath 进行后续操作
  }
});
回到顶部