保存和恢复 ArrayDeque onSaveInstanceState
Saving and restoring an ArrayDeque onSaveInstanceState
我正在开发一个视频应用程序,它使用 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);
}
可以用比这更efficient/cleaner的方式来完成吗?
我试过 outState.putSerializable("videoHistory", mVideoHistory.toArray());
但恢复时出现问题。
你可以这样做:
outState.putSerializable("videoHistory", (ArrayDeque<ProgramModel>) mVideoHistory);
恢复时再次施放。
希望对您有所帮助
我正在开发一个视频应用程序,它使用 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);
}
可以用比这更efficient/cleaner的方式来完成吗?
我试过 outState.putSerializable("videoHistory", mVideoHistory.toArray());
但恢复时出现问题。
你可以这样做:
outState.putSerializable("videoHistory", (ArrayDeque<ProgramModel>) mVideoHistory);
恢复时再次施放。
希望对您有所帮助