0

ArrayDeque を使用して、プッシュ、ポップを使用して、表示されたビデオの履歴を保存するビデオ アプリに取り組んでいます。それはうまくいきますが、ArrayDequeを保存して復元するきれいな方法を探しています

private Deque<ProgramModel> mVideoHistory = new ArrayDeque<>();

リストをarraylistとして保存して保存します。

@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());ましたが、復元すると問題が発生しました。

4

1 に答える 1

2

あなたはこれを行うことができます:

outState.putSerializable("videoHistory", (ArrayDeque<ProgramModel>) mVideoHistory);

復元時に再度キャスト。

それが役に立てば幸い

于 2016-02-08T07:59:20.300 に答える