0

上記のことは可能ですか?

私のシナリオは、URL が同じままで、基になる画像が実際に変化する天気図です。私がカバーしたいケースは次のとおりです: - アプリの同じセッション内 (通常は 2 ~ 5 分) で、Web から画像をリロードしたくない - 15 分ほど後に画像が変更された可能性が高いため、キャッシュされたバージョンがある場合は、それをダンプします。- オフライン中に画像をリロードしようとすると、画像がないよりは古い画像を含む画像がある方がよいため、ディスク キャッシュから表示したい。

この設定は可能ですか?UILで実現可能かどうかはすぐにはわかりませんでした。

素晴らしいライブラリをありがとう!

4

1 に答える 1

2

私はこれがあなたのための解決策だと思います:

File cacheDir = StorageUtils.getCacheDirectory(context); // or any other folder
MemoryCacheAware<String, Bitmap> memoryCacheCore 
          = new LruMemoryCache(4 * 1024 * 1024); // or any other implementation

MemoryCacheAware<String, Bitmap> memoryCache 
          = new LimitedAgeMemoryCache<String, Bitmap>(memoryCacheCore, 15 * 60);
DiscCacheAware discCache = new LimitedAgeDiscCache(cacheDir, 15 * 60);
ImageLoaderConfiguration config = new ImageLoaderConfiguration.Builder(context)
        .memoryCache(memoryCache)
        .discCache(discCache)
        ...
        .build();

UPD: UIL は常に最初にメモリ キャッシュ内の必要な画像を検索します。次に、UIL でディスク キャッシュを検索します。そして、ネットワークから画像をダウンロードします。

「期間限定」メモリ キャッシュまたはディスク キャッシュを使用する場合、ビットマップまたはイメージ ファイルは、タイムアウト後にキャッシュから削除されます (実際には、キャッシュ内の検索中に削除されます)。ロジックは次のとおりです。

  1. メモリ キャッシュ内のビットマップを検索
    • 必要なビットマップがあります
      • 指定された時間以上前にビットマップがキャッシュに追加されました
        • メモリ キャッシュから削除し、手順 2 に進みます
      • ビットマップが最近キャッシュに追加されました
        • ビットマップを取得して表示します。終わり。
    • キャッシュに必要なビットマップがありません。手順 2 に進みます
  2. ディスクキャッシュ内の画像ファイルを検索
    • 必要な画像はそこにあります
      • 指定された時間より前に画像がキャッシュに追加されました
        • ディスク キャッシュから削除し、手順 3 に進みます
      • 画像が最近キャッシュに追加されました
        • 画像をビットマップにデコードして表示します。終わり。
    • キャッシュに必要な画像がありません。手順 3 に進みます
  3. 画像をダウンロード

キャッシュを有効にすることを忘れないでください (表示オプションでDisplayImageOptions)。

于 2013-03-25T08:17:21.450 に答える