2016-02-08 6 views
0

Я работаю над видеоприложением, которое использует ArrayDeque для хранения нашей истории просмотренных видео с помощью push, pop. Это хорошо работает, но я искал чистый способ сохранения и восстановления ArrayDequeСохранение и восстановление ArrayDeque onSaveInstanceState

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); 
} 

Это может быть сделано более эффективным/очиститель способом, чем это?

Ive попробовал outState.putSerializable("videoHistory", mVideoHistory.toArray());, но восстановление вызвало у меня проблемы.

ответ

1

Вы можете сделать это: снова

outState.putSerializable("videoHistory", (ArrayDeque<ProgramModel>) mVideoHistory); 

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

надеюсь, что это помогает

+0

спасибо за быстрый ответ, кажется, мой ProgramModel обыкновение играть хороший этот путь, он дает мне 'Parcelable встречается IOException писать сериализуемая объект' – Eoin

+1

ProgramModel реализует Serializable? Если это так, проверьте, что все атрибуты типов, которые члены ProgramModel реализуют Serializable. – Pablo

Смежные вопросы