Сохранение и восстановление 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);

приведение снова при восстановлении.

Надеюсь, поможет

Другие вопросы по тегам