Сохранение и восстановление ArrayDeque onSaveInstanceState
Я работаю над видео-приложением, которое использует ArrayDeque для хранения нашей истории просмотра видео с использованием push, pop. Это хорошо работает, но я ищу чистый способ сохранения и восстановления ArrayDeque
private Deque<ProgramModel> mVideoHistory = new ArrayDeque<>();
Я сохраняю список, сохраняя его как arraylist.
@Override
public void onSaveInstanceState(final Bundle outState) {
// save history
ArrayList<ProgramModel> history = new ArrayList<>();
for (ProgramModel program : mVideoHistory) {
history.add(program);
}
outState.putParcelableArrayList("videoHistory", history);
}
Потом восстанавливаю
if (savedInstanceState != null) {
// restore history
ArrayList<ProgramModel> history =
savedInstanceState.getParcelableArrayList("videoHistory");
mVideoHistory = new ArrayDeque<>(history);
}
Можно ли сделать это более эффективным / чистым способом, чем этот?
Я пробовал outState.putSerializable("videoHistory", mVideoHistory.toArray());
но восстановление вызвало у меня проблемы.
1 ответ
Решение
Вы можете сделать это:
outState.putSerializable("videoHistory", (ArrayDeque<ProgramModel>) mVideoHistory);
приведение снова при восстановлении.
Надеюсь, поможет