私のアプリケーションでは、私はViewPagerの中にあるフラグメントを持っています。フラグメントにはRecyclerViewが含まれ、ユーザーの選択に基づいてWeb APIからフェッチされたデータのリストが含まれます。私の断片onSaveInstanceState
で フラグメント、onSaveInstanceStateの大きなデータリストを保存する(TransactionTooLargeExceptionを防ぐ方法)
TransactionTooLargeException
を見始めているなど、設定の変更
public void onSaveInstanceState(Bundle savedState) {
super.onSaveInstanceState(savedState);
savedState.putParcelableArrayList(LIST_STORAGE_KEY, new ArrayList<>(mItemAdapter.getModels()));
}
上のデータを保持するために、ビュンデにリストデータを保存します。
ImはBundleに置くリストが大きすぎるようです(かなり複雑なオブジェクトのコレクションなので)。
このケースはどのように処理する必要がありますか?私のフラグメント状態を保存(および復元)する方法。
ViewPager内のフラグメントにsetRetainInstance(true)
を使用してもよろしいですか?
をフェッチする動作を開始するために、フラグメントクラスのリストのためのフィールドを作成し、常に
null
またはリストのsize
をチェックしますいくつかのサービスにネットワークを格納する。この場合は、サービスに保存されているため、保存する必要はありません。 –これは少し残酷すぎるような音です。簡単な解決策は、Web APIからデータを再度取得することですが、ユーザーエクスペリエンスはそれほど優れていないと思います。 – devha
醜く高速な代替手段として、データを共有設定やファイルに保存することができます。 –