【发布时间】:2014-10-29 03:46:45
【问题描述】:
我问了这个问题:savedInstanceState.getParcelableArrayList() return empty list
但是现在,我发现这个问题和我的onDestroy()方法有关。
我将名为 mVideos 的 ArrayList 保存在 onSaveInstanceState() 中并清除其中的所有项目
onDestroy(我认为这样做会在应用程序被杀死时节省内存)。
在 onCreate() 我恢复保存的 mVideos,但它返回空列表
我的代码:
@Override
protected void onDestroy() {
// TODO Auto-generated method stub
super.onDestroy();
if (mVideos != null)
mVideos.clear();
mVideos = null;
}
@Override
protected void onSaveInstanceState(Bundle out) {
// TODO Auto-generated method stub
out.putParcelableArrayList(VIDEO_LIST, mVideos);
super.onSaveInstanceState(out);
}
@Override
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
if (savedInstanceState != null) {
ArrayList<Video> saved = savedInstanceState.getParcelableArrayList(VIDEO_LIST);
Log.e(VIDEO_LIST, "Count: " + saved.size());
}
}
--> saved.size() = 0。如果我在 onDestroy() 中删除 mVideos.clear() 它可以正常工作
我知道 onSaveInstanceState() 是在 onPause() 之后调用的。但是为什么在这种情况下,为什么 onDestroy
对已保存变量的影响?
【问题讨论】:
标签: android android-activity savestate