Glide是一款比较强大的android图片加载库,加载图片一行代码就能搞定。使用glide以及有一段时间了,最近打算深入的理解glide的工作原理,本文用来记录学习glide的相关知识。
Glide
glide图片的简单使用,只有一行代码glide.with().load().into()。
先说with方法
1. with方法用来控制glide图片加载的生命周期,里面可以传入activity、fragment、application。其实主要是分为两种,一种是application,一种是非application。
2. 当传入application 的时候,glide加载的生命周期跟随应用程序一样,不需要特殊处理
3. 当传入activity或者fragment的时候,glide会和activity的生命周期绑定。
这里实现的原理是,glide添加了一个透明的fragment,根据透明fragment的生命周期来监听activity生命周期。
load方法
load是用来加载图片资源的。根据传入的类型不同glide加载的方式不同。
说说glide缓存机制,一个是内存的缓存,一个是磁盘的缓存。
key的生成
glide缓存key的生成,根据图片的url地址和
注意:
这里如果想自定义key的生成可自己实现glideurl,传入load方法中
signature、with、height等十个参数,比较繁琐。所以一个图片的原图和缩略图对应的不是一张图片。
内存的缓存
skipyMemorycache可以控制是否需要内存缓存
分为两个部分,一个使用lrucache缓存,还有一个使用弱饮用机制缓存,主要是防止正在使用的图片缓存被lrucache清除
磁盘缓存
也是使用的lrucache
Google提供了一个disklrucache
diskcachestrategy可以控制磁盘缓存策略
- diskcachestrategy.none 表示不本地缓存图片
- diskcachestrategy.source 表示只缓存源图片
- diskcachestrategy.result 表示只缓存转化后的图片
- dikcachestrategy.all 表示既缓存源图片有缓存转化后的图片
into方法
主要是将图片显示view中
into显示的时候会根据imageview.getscalseltype对图片进行处理源码中只处理了两种,centercrop和fitcenter两种
into方法中也可以传入target,我们自定义处理主要有两种,一种simpletarget和viewtargwt
两者都可以拿到图片资源,可以处理很多事情
本文参考如下:












网友评论