Check if Image is in Cache - Universal Image Loader

前端 未结 5 1912
醉梦人生
醉梦人生 2021-02-07 18:29

I guess the title says it all. I tried:

imageLoader.getMemoryCache().get(key); 

with the image uri as key, but it always return null

相关标签:
5条回答
  • 2021-02-07 18:59

    It should be MemoryCacheUtils, so you should use

    MemoryCacheUtils.findCachedBitmapsForImageUri(imageUri, ImageLoader.getInstance().getMemoryCache());
    
    0 讨论(0)
  • 2021-02-07 18:59

    For disk cache use below code

    public static boolean isDiskCache(String url) {
            File file = DiskCacheUtils.findInCache(url, ImageLoader.getInstance().getDiskCache());
            return file != null;
    }
    
    0 讨论(0)
  • 2021-02-07 19:02

    Sometimes, when using the Universal Image Loader library, there comes a time where the loader takes a while to verify whether the remote image has been already loaded in your cache. To load the cache file directly, you can use the following method to check whether a local copy of the remote file has already been made:

        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()));  
     }  
    

    check it hereenter link description here

    0 讨论(0)
  • 2021-02-07 19:08

    Use MemoryCacheUtils.

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

    Memory cache can contain several bitmaps (diffenrent sizes) for one image. So memory cache use special keys, not image urls.

    0 讨论(0)
  • 2021-02-07 19:08

    I think you can create a simple method in your utility class like this:

    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;
    }
    

    and Use it like:

       if(Utils.isImageAvailableInCache(imageUrl)){
    //
          }
    
    0 讨论(0)
提交回复
热议问题