从三天前一直报错到今天中午,总算出了个能用的版本了。
一如既往先发链接:
https://github.com/mlxy/ImageLoader
缓存处理
·LruCacheHelper:
封装第一级缓存,也就是内存缓存的处理。
LruCache是Android自带的缓存处理类,如名字所说,和使用软引用的映射相比,优势在于可以忽略缓存上限处理的细节问题,初始化时在构造函数中给一个缓存上限即可。一般做法是使用最大内存的八分之一:
Runtime.getRuntime().maxMemory() / 8
但是我觉得八分之一实在太少,所以干脆给了三分之一。
另外在初始化时需要重写LruCache类的sizeOf方法来自行计算图片的大小并返回,默认情况返回的是图片数量。
封装类给出四个接口,分别是打开和关闭,保存和读取。
没什么好说的,直接放代码。
1 public class LruCacheHelper { 2 private LruCacheHelper() {} 3 4 private static LruCache<String, Bitmap> mCache; 5 6 /** 初始化LruCache。 */ 7 public static void openCache(int maxSize) { 8 mCache = new LruCache<String, Bitmap>((int) maxSize) { 9 @Override 10 protected int sizeOf(String key, Bitmap value) { 11 return value.getRowBytes() * value.getHeight(); 12 } 13 }; 14 } 15 16 /** 把图片写入缓存。 */ 17 public static void dump(String key, Bitmap value) { 18 mCache.put(key, value); 19 } 20 21 /** 从缓存中读取图片数据。 */ 22 public static Bitmap load(String key) { 23 return mCache.get(key); 24 } 25 26 public static void closeCache() { 27 // 暂时没事干。 28 } 29 }