0

私は Volley をいじっています。Volley がキャッシュを空にしようとしたときに、特定のデータ (JSON または画像) をメモリまたは DiskBasedCache に保存したいと考えています。現在私が行っているのは、アイテムが内部的に保持されるようにマークされている場合、それをファイルに保存し、Volley が失敗した場合はファイル内のデータをチェックすることです。

私が現在行っていることは、DiskBasedCache をハッキングし、pruneIfNeeded が呼び出されたときにクリアされないようにキーの静的な ArrayList を保持することです。これを行うためのより推奨される方法はありますか?

4

1 に答える 1

2

あなたの解決策は有効な選択肢だと思います。少し「ハッキー」ではありませんが、もう少し作業が必要な別のオプションがあります。

Volley への呼び出しの上に、独自のディスク キャッシュと独自のメモリ キャッシュを持つ "レイヤー" を作成します。この回答のために、レイヤネットワーク インターフェイスを呼び出してみましょう。

次の流れに従います。

ネットワーク資産が必要な場合:

  1. ネットワーク層の mem-cache を確認してください - 見つかった場合は戻ります。
  2. no-hit: ネットワーク層のディスク キャッシュをチェックします - 見つかった場合は戻ります。
  3. no-hit: Volley にリクエストを転送します。
  4. Volley が結果を返したときに、アセットが常に永続化したい種類の場合は、ディスクとキャッシュに永続化します。
  5. 結果を返します。

すべてのディスク操作は非ブロッキングで、バックグラウンド スレッドで実行する必要があります。ネットワーク層との通信全体は、成功リスナーとエラー リスナーを使用した Volley スタイルに似ている必要があります。

于 2013-10-24T12:30:06.193 に答える