最近刚完成一个仿微信项目,刚闲下来,写篇文章,方便大家理解Android的图片加载模式。
有人会问:为什么要自定义,三方库不是很完善吗?
我说:是的,现在有Picasso,Glide等很多优秀的封装,可以完成。
但重点是:
1、通过自定义了解原理和本质才是最主要的。
2、三方库少则十多个类,多则几十个甚至上百个类,方法更是不计其数,要是完全掌握恐怕至少也要一个月时间,这样对我们的学习效率影响很大,试想我们是在最有限的时间掌握原理好呢,还是一个劲的钻进无限的回调,参数拼接... ..好呢。
3、也是上班原因,由于本人所在单位对外部访问严格的审核,所以开发中的很多技术点,很多都是自己封装完成,在自己编写的过程中不断完善和探索,以达到能公用的目标为己任。
好了,闲话不啰嗦,我们切入正题。
一、原理:图片加载的缓存机制,相信大家都知道,但还是唠叨几句,希望对初学的人也有个认知。
因为APP端用户是流量有限的,所以能最大限度的减下用户流量的消耗,是用户很看重的一点,所以要把一些图片呀,音频视频,集合呀等一些过大的数据,缓存起来,等到用户再次登录,就可以从本地获取,极大节约了资源。
三级缓存:
好了,以目了然,现在就开始具体的代码实现了
二:代码
ImageLoader.java(图片加载类)
ImageLoadListener.java(图片加载完成回调接口)
/**
* Created by jambestwick on 2018/1/10.
* <p>
* 三级缓存
*/
public class ImageLoader {
private static final String TAG = "ImageLoader";
// LRUCahce 池子
private static LruCache<String, Bitm