3 回答
TA贡献1770条经验 获得超3个赞
启动相机需要大量内存。因此,在内存不足的设备上,android系统会关闭在后台运行的Activity,因此会调用onCreate()。由于此光路,您提供的光路变为空,因此您将无法获取已保存的图像。
解决方法是在系统破坏您的活动时保存光路径,然后再次恢复它。
@Override
public void onSaveInstanceState(Bundle outState) {
// TODO Auto-generated method stub
outState.putString("photopath", photopath);
super.onSaveInstanceState(outState);
}
@Override
protected void onRestoreInstanceState(Bundle savedInstanceState) {
// TODO Auto-generated method stub
if (savedInstanceState != null) {
if (savedInstanceState.containsKey("photopath")) {
photopath = savedInstanceState.getString("photopath");
}
}
super.onRestoreInstanceState(savedInstanceState);
}
并且如果您正在Fragment上执行此操作。
@Override
public void onSaveInstanceState(Bundle outState) {
// TODO Auto-generated method stub
outState.putString("photopath", photopath));
super.onSaveInstanceState(outState);
}
@Override
public void onViewStateRestored(Bundle savedInstanceState) {
// TODO Auto-generated method stub
if (savedInstanceState != null) {
if (savedInstanceState.containsKey("photopath")) {
photopath = savedInstanceState.getString("photopath");
}
}
super.onViewStateRestored(savedInstanceState);
}
TA贡献1864条经验 获得超6个赞
相机应用程序需要大量内存,并且要释放内存,操作系统必须杀死包括您在内的后台应用程序。这对于所有Android应用程序都是正常的。相机应用返回时将重新创建您的活动。要保留活动状态信息,请覆盖onSaveInstanceState()
以存储您的数据,然后将其读回onCreate()
。
- 3 回答
- 0 关注
- 483 浏览
添加回答
举报