Я задал этот вопрос: savedInstanceState.getParcelableArrayList() возвращает пустой список
Но теперь я обнаружил, что эта проблема связана с моим методом onDestroy().
Я сохраняю свой ArrayList с именем mVideos в 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. Если я удаляю mVideos.clear() в onDestroy(), он работает правильно
Я знаю, что onSaveInstanceState() вызывается сразу после onPause(). НО зачем в таком случае, зачем onDestroy
эффекты для сохраненной переменной?