package cn.alphabets.light.network;
import android.graphics.Bitmap;
import android.util.LruCache;
import com.android.volley.toolbox.ImageLoader;
/**
* 图片内存缓存
* LRU(Least Recently Used),根据使用的顺序生成缓存,依赖LruCache
* ImageLoader原则上禁止有可能阻塞处理的处理,如文件缓存等
* Created by lilin on 14/12/1.
*/
public class LruImageCache implements ImageLoader.ImageCache {
private LruCache<String, Bitmap> mMemoryCache;
public LruImageCache() {
int maxMemory = (int) (Runtime.getRuntime().maxMemory() / 1024);
//int cacheSize = maxMemory / 8; // 使用最大内存的一定比例
int cacheSize = 10 * 1024 * 1024; // 10MB 使用固定大小
mMemoryCache = new LruCache<String, Bitmap>(cacheSize) {
@Override
protected int sizeOf(String key, Bitmap bitmap) {
// 返回使用的缓存大小(KB)
return bitmap.getByteCount() / 1024;
}
};
}
@Override
public Bitmap getBitmap(String url) {
return mMemoryCache.get(url);
}
@Override
public void putBitmap(String url, Bitmap bitmap) {
mMemoryCache.put(url, bitmap);
}
}