Подтвердить что ты не робот

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

Я думаю, что название говорит все. Я пробовал:

imageLoader.getMemoryCache().get(key); 

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

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

4b9b3361

Ответ 1

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

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

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

Ответ 2

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

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

Ответ 3

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

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

Ответ 4

Иногда, используя библиотеку 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()));  
 }  

проверьте здесь введите ссылку здесь

Ответ 5

Я думаю, вы можете создать простой метод в своем классе утилиты следующим образом:

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)){
//
      }