我问了这个问题:savedInstanceState.getParcelableArrayList() return empty list
但是现在,我发现这个问题与我的 onDestroy()方法有关。
我在 onSaveInstanceState()中保存名为 mVideos 的ArrayList并清除其中的所有内容
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());
}
}
- &GT; saved.size()= 0 。如果我删除onDestroy()中的 mVideos.clear(),它可以正常工作
我知道在onPause()之后立即调用onSaveInstanceState()。但为什么在这种情况下,为什么onDestroy
对保存变量的影响?
答案 0 :(得分:1)
我认为,在onSaveInstanceState
Android中将指针保存到内存区域,因此当您调用 mVideos.clear()时,该内存区域为清除,当您尝试恢复它时,它会返回一个空列表。