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 设备上,相机占用内存较大,若未及时释放或图片处理不当,可能导致应用崩溃并自动重启。
可能原因及解决方案:
-
内存不足
- 拍照时系统相机或应用占用内存过高,触发系统回收机制。
- 建议:压缩图片后再处理,使用
uni.compressImage对图片进行压缩,减少内存占用。
-
相机资源未释放
- 拍照后未正确关闭相机,导致后续调用冲突。
- 建议:在
uni.chooseImage或相机 API 调用后,检查代码逻辑,确保回调完成后释放资源(如销毁相机实例)。
-
临时文件路径问题
- 使用
tempFilePaths时,若路径无效或文件过大,可能引发异常。 - 建议:确认获取的临时路径有效,并尽快将文件转移到应用持久目录(如
uni.saveFile)。
- 使用
-
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 进行后续操作
}
});

