第一部分:使用
Glide.with(Context).load(String).into(ImageView)
Glide.with(Context)
返回RequestManager,主要实现和Fragment、Activity生命周期的绑定
.load(String)
RequestManager的load(String)方法返回DrawableTypeRequest,根据图片地址返回一个用于创建图片请求的Request的Builder,
第二部分:缓存类型划分
Glide的缓存类型分为两大类,一类是Resource缓存,一类是Bitmap缓存。
一、Resource缓存
Glide在缓存Resource使用三层缓存,包括:
- 一级缓存:缓存被回收的资源,使用LRU算法当需要再次使用到被回收的资源,直接从内存返回。
- 二级缓存:使用弱引用缓存正在使用的资源。
- 三级缓存:磁盘缓存。
二、Bitmap缓存算法
使用BitmapPool来缓存Bitmap,使用的也是LRU算法。
当需要使用Bitmap时,从Bitmap的池子中取出合适的Bitmap,若取不到合适的,则再新创建。
当Bitmap使用完后,不直接调用Bitmap.recycler()回收,而是放入Bitmap的池子。
三、Recyclerview显示多图
当图5划入界面时,会复用图1的Item,设置新的图片之前,会先清空原有图片的资源,清空时会把Resource资源放入一级缓存待将来复用,同时会将回收的Bitmap放入BitmapPool中;
当图5向下隐藏,图一出现时,图5的资源会放到一级缓存中,图一的资源则从一级缓存中取出,无须重新网络请求,同时所需要的Bitmap也无须重新创建,直接复用。