我使用expo-image-picker来允许用户选择和拍摄照片。从库中选择一张图像可以正常工作,但是当使用相机时,在拍摄照片后应用程序崩溃了。下面是我的代码:
const take = async () => {
let result = await ImagePicker.launchCameraAsync({
mediaTypes: ImagePicker.MediaTypeOptions.Images,
quality: 1,
});
console.log(result.uri);
if (!result.cancelled) {
setImageUri(result.uri);
}
};
我想我有所有需要的权限,问题似乎只发生在内存有限的旧android设备上。有什么想法吗?
1条答案
按热度按时间sczxawaw1#
没有好的和容易的解决办法。
现在的情况是,当你启动相机时,它会作为一个新的
Activity
启动,而你的应用程序mainActivity
会留在后台。从Android P(9)开始,操作系统可以杀死你的后台活动。甚至有一个网站的实现对开发者来说更糟糕:https://dontkillmyapp.com/
可能的解决办法:
1.准备崩溃。保存所有状态和导航堆栈在本地存储,launchCamera。应用程序将重新启动,你会恢复所有的屏幕/导航/数据/等,并使用
ImagePicker.getPendingResultAsync
获取照片。1.将lib更改为expo-camera或react-native-vision-camera,因为他们在
mainActivity
上使用相机但需要无聊的重新实现,而且看起来不如制造商原生相机。