对Glide的一点认识

232 阅读1分钟

第一部分:使用

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使用三层缓存,包括:

  1. 一级缓存:缓存被回收的资源,使用LRU算法当需要再次使用到被回收的资源,直接从内存返回。
  2. 二级缓存:使用弱引用缓存正在使用的资源。
  3. 三级缓存:磁盘缓存。


二、Bitmap缓存算法

使用BitmapPool来缓存Bitmap,使用的也是LRU算法。

当需要使用Bitmap时,从Bitmap的池子中取出合适的Bitmap,若取不到合适的,则再新创建。

当Bitmap使用完后,不直接调用Bitmap.recycler()回收,而是放入Bitmap的池子。

三、Recyclerview显示多图

Glide在Recyclerview的使用

当图5划入界面时,会复用图1的Item,设置新的图片之前,会先清空原有图片的资源,清空时会把Resource资源放入一级缓存待将来复用,同时会将回收的Bitmap放入BitmapPool中;

当图5向下隐藏,图一出现时,图5的资源会放到一级缓存中,图一的资源则从一级缓存中取出,无须重新网络请求,同时所需要的Bitmap也无须重新创建,直接复用。