我正在开发一个视频应用程序,它使用 ArrayDeque 来存储我们观看的视频的历史记录,使用推送、弹出。它运行良好,但我正在寻找一种保存和恢复 ArrayDeque 的干净方法
private Deque<ProgramModel> mVideoHistory = new ArrayDeque<>();
我通过将其另存为数组列表来保存列表。
@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.putSerialized("videoHistory", mVideoHistory.toArray());
但恢复给我带来了问题。
最佳答案
你可以这样做:
outState.putSerializable("videoHistory", (ArrayDeque<ProgramModel>) mVideoHistory);
恢复时再次施放。
希望对你有帮助
关于java - 在 SaveInstanceState 上保存和恢复 ArrayDeque,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/35264682/