私のアプリでは、1つのアクティビティと9つのフラグメントがあり、ユーザーがフラグメント1からフラグメント2に移動するときに常に置き換えられて保持されます。フラグメント1のメソッドonDestroyViewが呼び出され、すべてのフィールド内部にいくつかのカスタムオブジェクトを持つ大きなリンクリストを持っている)と、それらをメモリに保持すると、OutOfMemory例外がスローされるような他のオブジェクトがあります。Android Fragments - 状態を保存する場所(カスタムオブジェクトのリンクリスト)
このリストはどこに保存しますか?データベースに? (ここで私はあなたがそれを可能にするためにいくつかのハッキングを行う必要があることを見た)。 最初はonSaveInstanceStateメソッドで提供されたバンドルにそれらを格納することを考えましたが、そのメソッドは、すべてのフラグメントの "コンテナ"コンテナとして機能するActivityにタイトなので、決して呼び出されません。
そして私はOnSaveInstanceStateに関して、フラグメント内での良い練習ではないと思っています。だから、私はすべてのフィールドをクリーンアップし、私はそれらをいくつかの場所に保存する必要があります、そして、フラグメントが再作成されたら、すべての変数を取り戻して、ユーザーがそれを残したままにしてください。 (リサイクラビューの中でのポジションを維持するなど)
私はこれに関する多くのことを検索し、これに関する具体的な回答は見つかりませんでした。
だからそれは少し明確にするために、質問は以下の通りです:フラグメントの状態(リサイクルビューから位置+であるオブジェクトのリストを保存するには、アンドロイドでベストプラクティスです
何他のフィールドを表示しています)?すべてのフィールドまたはSharedPreferencesを格納するDBを使用する必要がありますか?または、私が言及しなかった/見つけた別の方法がありますか?
私の主な関心事は、このテーマとパフォーマンスに関するアンドロイドのベストプラクティスです。
、および状態が自動的に保持されます:
は、ここに詳細を参照してください。何もする必要はありません。 – Abbas
はい、しかし、私はOutOfMemory例外をいくつかの時点で取得し、それは私が避けようとしているものです... –
DBにデータを保存し、該当する場合は[CursorAdapter](https://developer.android .com/reference/android/widget/CursorAdapter.html)は、DBからデータセットを効率的にロードするのに優れているか、単に[Loaders](https://developer.android.com/guide/components/loaders.html)を使用するだけです。 – Abbas