保存和恢复 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);

恢复时再次施放。

希望对您有所帮助