2016-10-05 7 views
1

私のアプリにRecyclerViewがあります。RecyclerViewからアイテムをクリックすると新しいアクティビティが開きます。Android:ネットワークコールを避けるためにrecyclerviewのデータを保存する

新しいアクティビティには2つのフラグメントが含まれていますが、両方のフラグメントはネットワークコールからデータをロードします。私は静的変数を使ってデータを保存しました。次回にフラグメントを開いたときにネットワークコールは行われません。からRecyclerViewをクリックすると、以前に選択したアイテムのデータを含むフラグメントが表示されます変数は静的であるためです。これを避ける方法は?

+0

'Static'変数によってメモリリークが発生します。そのデータベースを使用する方が良いです。 – Piyush

+0

の代わりに静的変数を使用する方が、グローバル変数をいくつか持たせたい場合は、機構のキャッシュまたはアプリケーションクラスを使用することになります。 –

+0

は、読み込まれたデータをsharedPreferenceに保存し、共有プリファレンスをクリアバックすることでOKです。 –

答えて

0

もしあなたがidを持っているのであれば、それらのrecyclerview項目のために、あなたはできるだけIDを持つSharedPreferenceまたはSQliteデータベースにデータを保存するだけです。

0

データベースを使用するのが最適ですが、そうしたくない場合や、一定の時間が経過してデータが変更されている場合は、LruCacheクラスをAndroidで使用し、アイテムIDをキーとして使用できます。これにより、アイテムの保存方法と、最近使用したアイテムのうち最も古いものを削除してメモリを節約する方法を制御できます。

関連する問題