从三天前一直报错到今天中午,总算出了个能用的版本了。

一如既往先发链接:

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

相关文章:

  • 2022-01-11
  • 2021-07-24
  • 2021-12-08
  • 2022-12-23
  • 2022-12-23
  • 2021-11-13
  • 2021-10-17
  • 2021-05-16
猜你喜欢
  • 2021-08-01
  • 2022-12-23
  • 2021-10-02
  • 2021-08-28
  • 2022-02-22
  • 2021-10-10
  • 2022-12-23
相关资源
相似解决方案