这是关于图片三级缓存的详解
在很多手机App上我们经常能发现,在没有网的情况下有些图片依然能够正常加载,这是为什么呢?这是因为写App的时候用了图片缓存机制,当你第一次打开App的时候它已经把图片缓存到你的手机,所以第二次打开App的时候即使没有网络图片也能够正常加载,三级缓存,来自于手机的运存,内存,还有网络,现在开源代码实现三级缓存的机制有很多,比如说大家常用的glide,picasso,今天咱们就写一个自己图片缓存机制,话不多说,请看以下内容
这是第一次打开App的效果
这是我们关掉网络,重新打开App的效果,此时手机是没有网的,图片依然能正常加载
第一步
首先我们先创建一个ImageCache类继承LruCache并且携带两个参数分别是String类型和Bitmap类型,上代码
public class ImageCache extends LruCache<String, Bitmap> {
private Map<String, SoftReference<Bitmap>> cacheMap;
//重写构造方法
public ImageCache(Map<String, SoftReference<Bitmap>> cacheMap) {
super((int) (Runtime.getRuntime().maxMemory() / 8));//这里是设置做多占手机内存的1/8,
this.cacheMap = cacheMap;
}
public Map<String, SoftReference<Bitmap>> getCacheMap() {
return cacheMap;
}
}
第二步,写我们的缓存机制
新建一个类,命名为CacheUtil,这里我用的是一个单例模式,这里有两个参数,分别是Context,ImageCache,然后重构
public class CacheUtil {
private static CacheUtil instance;
private Context context;
private ImageCache imageCache;
public CacheUtil(Context context) {
this.context = context;
Map<String, SoftReference<Bitmap>