Intereting Posts
Дождитесь выполнения AsyncTask с помощью ProgressDialog ClassCastException при добавлении LayoutParams Как отправлять и получать SMS-сообщения от Android-приложения? Тесты инструментария эспрессо – как удалить или удалить приложение после теста Android.support.v4.app.FragmentManager OR android.app.FragmentManager? Покупки в приложениях: доля пользователей в покупках In-App между Android и iOS Java.lang.RuntimeException: Невозможно создать экземпляр активности ComponentInfo / java.lang.ClassNotFoundException Runtime.exec (): перезагрузка в Android? Ошибка OutOfMemory при попытке поворота изображения внутри изображения Сборщик контактов, получение фамилии, имени, номера телефона Как создать общий макет для Android XML для всех видов деятельности Использование пользовательских attrs в styles.xml в android Не удалось выполнить компиляцию под Android Studio 3.0 Canary 1 Настройка NavigationView – Добавление динамического headerView, Android Design Design Library (Контекст, токен) в создании экземпляра MediaController

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

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

imageLoader.getMemoryCache().get(key); 

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

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

Используйте 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; }