アクティビティがローテーションのように onCreate/Destroy サイクルを通過するときに、フラグメント内でデータを保持するにはどうすればよいでしょうか?
私たちのセットアップでは、サーバーからフラグメント カスタム リスト アダプターにロードされる可能性のある大きなリストがあり、ローテーションでリロードしないようにすることで UX をスムーズにしたいと考えています。フラグメントを設定する際に発生した問題は、retainInstance=true; これは、アダプタが元のアクティビティのコンテキストへの参照を持っているため、メモリ リークが発生することです。データをフラグメントに保存して、アダプターを再作成するだけでよいでしょうか。もしそうなら、それは本当に適切な慣行ですか?
次のアイデアは、データをセッション シングルトン オブジェクトに格納し、ローテーション後に取得することです。これは、古いデータに関するいくつかの問題を提示しますが、簡単に克服できます。
*最善の解決策のように思われる他の選択肢は、データをバンドルに保存し、ローテーション後に新しいフラグメントに復元することです。ただし、アプリ全体に保存する必要があるオブジェクトがかなりあり、一部のオブジェクトは複雑で、リストや複数の型が含まれており、分割可能にするのが面倒です。より良い解決策はありますか?それとも、弾丸をかじって、Parcelable にする必要がありますか?