私はこれがあなたのための解決策だと思います:
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 でディスク キャッシュを検索します。そして、ネットワークから画像をダウンロードします。
「期間限定」メモリ キャッシュまたはディスク キャッシュを使用する場合、ビットマップまたはイメージ ファイルは、タイムアウト後にキャッシュから削除されます (実際には、キャッシュ内の検索中に削除されます)。ロジックは次のとおりです。
- メモリ キャッシュ内のビットマップを検索
- 必要なビットマップがあります
- 指定された時間以上前にビットマップがキャッシュに追加されました
- メモリ キャッシュから削除し、手順 2 に進みます
- ビットマップが最近キャッシュに追加されました
- キャッシュに必要なビットマップがありません。手順 2 に進みます
- ディスクキャッシュ内の画像ファイルを検索
- 必要な画像はそこにあります
- 指定された時間より前に画像がキャッシュに追加されました
- ディスク キャッシュから削除し、手順 3 に進みます
- 画像が最近キャッシュに追加されました
- 画像をビットマップにデコードして表示します。終わり。
- キャッシュに必要な画像がありません。手順 3 に進みます
- 画像をダウンロード
キャッシュを有効にすることを忘れないでください (表示オプションでDisplayImageOptions
)。