通过LruCache实施访问缓存的图像

时间:2018-11-13 23:50:01

标签: android android-volley android-lru-cache

我有一个带有图像的GridView,我使用Volley填充了它,并使用以下链接缓存了图像。我想从缓存的实现中的新活动中访问GridView的选定图像。我在此处在StackOverflow上进行了搜索,但找不到如何使用其键(在这种情况下为URL)访问缓存的图像。我遵循了这些链接,但找不到任何东西:

Jake Whartons Volley CUstomization

VolleyImageCacheExample

我是否必须在第二个活动中使用在ImageLoder对象中创建的同一LruCache对象,还是有其他方法?

Singleton类中的Imageloader对象

这是所使用的LruCache对象的默认实现。如果有人可以解释使用下面的代码?

imageLoader = new ImageLoader(requestQueue, new ImageLoader.ImageCache() {

        private final LruCache<String, Bitmap> cache = new LruCache<>(10);

        @Override
        public Bitmap getBitmap(String url) {
            return cache.get(url);
        }

        @Override
        public void putBitmap(String url, Bitmap bitmap) {
            cache.put(url, bitmap);
        }
    });

假设我有一个自定义类BitmapCache,该类扩展了LruCache并实现了ImageCache,请指导我如何在第二个活动中访问缓存以访问缓存的图像

public class LruCacheClass extends LruCache<String,Bitmap> implements ImageLoader.ImageCache {

public LruCacheClass(int maxSize) {
    super(maxSize);
}



@Override
protected int sizeOf(String key, Bitmap value) {
    return value.getRowBytes() * value.getHeight();
}



@Override
public Bitmap getBitmap(String url) {
    return get(url);
}

@Override
public void putBitmap(String url, Bitmap bitmap) {

    put(url, bitmap);

}}

1 个答案:

答案 0 :(得分:0)

我找到了答案 here

原因是我在从缓存中获取图像时调整了ImageView的大小。缓存只会返回原始保存大小的图像。