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 關注
- 526 瀏覽
添加回答
舉報