Проверьте, находится ли изображение в кеше – универсальный загрузчик изображений

Думаю, в названии говорится все. Я пытался:

imageLoader.getMemoryCache().get(key); 

С изображением uri как ключом, но он всегда возвращает null

Хотя я включил кеширование в конфиге.

Solutions Collecting From Web of "Проверьте, находится ли изображение в кеше – универсальный загрузчик изображений"

Используйте MemoryCacheUtils .

 MemoryCacheUtils.findCachedBitmapsForImageUri(imageUri, ImageLoader.getInstance().getMemoryCache()); 

Кэш памяти может содержать несколько растровых изображений (размер шрифта) для одного изображения. Таким образом, в кеше памяти используются специальные ключи, а не URL-адреса изображений.

Это должен быть MemoryCacheUtil s , поэтому вы должны использовать

 MemoryCacheUtils.findCachedBitmapsForImageUri(imageUri, ImageLoader.getInstance().getMemoryCache()); 

Иногда при использовании библиотеки 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)){ // } 

Для кеша диска используйте код ниже

 public static boolean isDiskCache(String url) { File file = DiskCacheUtils.findInCache(url, ImageLoader.getInstance().getDiskCache()); return file != null; }