Я думаю, что название говорит все. Я пробовал:
imageLoader.getMemoryCache().get(key);
с изображением uri в качестве ключа, но он всегда возвращает null
хотя я включил кеширование в конфиге.
Я думаю, что название говорит все. Я пробовал:
imageLoader.getMemoryCache().get(key);
с изображением uri в качестве ключа, но он всегда возвращает null
хотя я включил кеширование в конфиге.
Используйте MemoryCacheUtils
.
MemoryCacheUtils.findCachedBitmapsForImageUri(imageUri, ImageLoader.getInstance().getMemoryCache());
Кэш памяти может содержать несколько растровых изображений (размеры разницы) для одного изображения. Таким образом, кэш памяти использует специальные ключи, а не URL-адреса изображений.
Он должен быть MemoryCacheUtil s, поэтому вы должны использовать
MemoryCacheUtils.findCachedBitmapsForImageUri(imageUri, ImageLoader.getInstance().getMemoryCache());
Для кэша диска используйте код ниже
public static boolean isDiskCache(String url) {
File file = DiskCacheUtils.findInCache(url, ImageLoader.getInstance().getDiskCache());
return file != null;
}
Иногда, используя библиотеку Universal Image Loader, наступает время, когда загрузчик занимает некоторое время, чтобы проверить, было ли удаленное изображение уже загружено в ваш кеш. Чтобы загрузить файл кэша напрямую, вы можете использовать следующий метод, чтобы проверить, была ли сделана локальная копия удаленного файла:
File file = imageLoader.getDiscCache().get(url);
if (!file.exists()) {
DisplayImageOptions options = new DisplayImageOptions.Builder()
.cacheOnDisc()
.build();
imageLoader.displayImage(url, imageView, options);
}
else {
imageView.setImageURI(Uri.parse(file.getAbsolutePath()));
}
проверьте здесь введите ссылку здесь
Я думаю, вы можете создать простой метод в своем классе утилиты следующим образом:
public static boolean isImageAvailableInCache(String imageUrl){
MemoryCache memoryCache = ImageLoader.getInstance().getMemoryCache();
if(memoryCache!=null) {
for (String key : memoryCache.keys()) {
if (key.startsWith(imageUrl)) {
return true;
}
}
}
return false;
}
и используйте его как:
if(Utils.isImageAvailableInCache(imageUrl)){
//
}