我正在开发一个视频应用程序,该应用程序使用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);


恢复时再次投射。

希望能帮助到你

10-06 10:21