我正在开发一个视频应用程序,该应用程序使用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.putSerializable("videoHistory", mVideoHistory.toArray());
,但还原给我带来了问题。 最佳答案
你可以这样做:
outState.putSerializable("videoHistory", (ArrayDeque<ProgramModel>) mVideoHistory);
恢复时再次投射。
希望能帮助到你