したがって、最終的には次のように ImageLoadingListener を使用しました。
onLoadingStarted:
読み込みの開始時にキャッシュを確認します。
onLoadingComplete:
キャッシュが見つからない場合は何もしません。リクエストはネットワークに送信され、キャッシュは自然に更新されます。それ以外の場合は、キャッシュをクリアして、displayImage を再度呼び出します (今回はリスナーは必要ありません)。キャッシュされた画像は、通常どおりビューに表示されます。また、2 回目の読み込みが完了すると、ビューとキャッシュが更新されます。
ImageLoader.getInstance().displayImage(imageUri, view, new SimpleImageLoadingListener() {
boolean cacheFound;
@Override
public void onLoadingStarted(String url, View view) {
List<String> memCache = MemoryCacheUtils.findCacheKeysForImageUri(url, ImageLoader.getInstance().getMemoryCache());
cacheFound = !memCache.isEmpty();
if (!cacheFound) {
File discCache = DiscCacheUtils.findInCache(url, ImageLoader.getInstance().getDiscCache());
if (discCache != null) {
cacheFound = discCache.exists();
}
}
}
@Override
public void onLoadingComplete(String imageUri, View view, Bitmap loadedImage) {
if (cacheFound) {
MemoryCacheUtils.removeFromCache(imageUri, ImageLoader.getInstance().getMemoryCache());
DiscCacheUtils.removeFromCache(imageUri, ImageLoader.getInstance().getDiscCache());
ImageLoader.getInstance().displayImage(imageUri, (ImageView) view);
}
}
});
}