Glide源码详解: http://blog.csdn.net/yulyu/article/details/60331803
Glide是google推荐的图片加载框架,他不仅性能高,功能强大,而且调用起来非常简单。
一.Glide的构造
Glide是通过GlideBuilder中的createGlide方法生成的(核心代码如下)
Glide的构造参数主要有四个,都是通过createGlide生成的.
MemoryCache 内存缓存
BitmapPool 图片池
DecodeFormat 图片格式
Engine 引擎类
二.with方法
with方法有很多重载,最后会返回一个RequestManager,RequestManager 方法参数为Context,
方法里有一些对context if判断操作识别,就算你传入的是Context ,这里也会根据你Context 实际的类型,
走不同的分支,如果你是在子线程调用with方法,或者传入的Context是Application的话,
请求是跟你的Application的生命周期同步
三.load方法
这里方法也有很多重载
但是最后都会返回一个DrawableTypeRequest (继承了DrawableRequestBuilder)
DrawableRequestBuilder就是支持链式调用的一个类,
我们平时有类似的需求的时候也可以模仿这样的处理方式,把一些非必须参数用链式调用的方式来设置
四.into方法
1.Util.assertMainThread();这里会检查是否主线程,不是的话会抛出异常,所以into方法必须在主线程中调用.
2.当你没有调用transform方法,并且你的ImageView设置了ScaleType,
那么他会根据你的设置,对图片做处理(具体处理可以查看
DrawableRequestBuilder的applyCenterCrop或者applyFitCenter方法,
我们自己自定义BitmapTransformation也可以参考这里的处理).
五、Glide缓存
Glide支持图片的二级缓存(并不是三级缓存,因为从网络加载并不属于缓存),即内存缓存和磁盘缓存。
缓存基础
在 Android App 中必须去做的是一个很好的实现图片加载组件,尝试去减少网络请求,减少用户流量支出,Glide 通过使用默认的内存和磁环缓存去避免不必要的网络请求。
磁盘缓存
一般的图片缓存指的就是磁盘缓存,把网络上的图片缓存到本地,这样就不需要每次都从网络加载,既提高了加载速度,又为用户节省了流量。Glide在默认情况下是开启磁盘缓存的,而且提供了丰富的API来让开发者自己配置和管理磁盘缓存。
缓存位置和大小
开发者可以通过构建一个自定义的GlideModule来配置Glide磁盘缓存的位置和大小。最简单的方法如下: