Glide的三级缓存和四级缓存

一、普通的三级缓存

内存缓存,优先加载,速度最快
本地缓存,次优先加载,速度快
网络缓存,最后加载,速度慢,浪费流量

二、三级缓存范围:

活动缓存:在某个Activity范围,页面退出该缓存就不存在

内存缓存:某个App范围,应用完全退出就不存在

磁盘缓存:整个系统,只要不删除数据,就一直存在

三、三级缓存的作用:

活动缓存:分担内存缓存的负担,
内存缓存:加快数据读取
磁盘缓存:进行永久性保持

四、Glide三级缓存的使用

1、优先从活动缓存获取
2、活动缓存没有就再内存缓存中寻找
3、内存缓存没有,就去磁盘缓存读取
4、磁盘缓存没有就去网络获取本地文件读取

五、Glide的缓存使用

  1、内存缓存:

Glide.with(this)
     .load(url)
     .skipMemoryCache(true)//关闭内存缓存
     .into(imageView);

  2、磁盘缓存:

Glide.with(this)
     .load(url)
     .diskCacheStrategy(DiskCacheStrategy.AUTOMATIC)
     .into(imageView);
一个 diskCacheStrategy( ) 方法就可以调整他的硬盘缓存策略。其中可以传入的参数有四种:

DiskCacheStrategy.ALL :           表示既缓存原始图片,也缓存转换过后的图片。
DiskCacheStrategy.NONE:        表示不缓存任何内容。
DiskCacheStrategy.RESOURCE: 表示只缓存原始图片。
DiskCacheStrategy.RESULT:      (已过期,新api4.11修改为后面两个)表示只缓存转换过后的图片(默认选项)。
DiskCacheStrategy.DATA:          表示只缓存转换过后的图片。
DiskCacheStrategy.AUTOMATIC   表示智能判断选择模式(默认选项)。


六、Glide关联生命周期:

Glide进行的网络请求可以和当前页面(Activity或者Fragment)生命周期绑定在一起,当在某一个页面中开始请求网络图片时,假设此时突然按了退出键,那么Glide能监听到这个页面(Activity或者Fragment)的onStop方法,它会将当前所有正在进行但是尚未完成的Request请求暂停掉;同样道理,当页面再次回到前台时,它可以监听到页面的onStart方法,然后将所有当前尚未完成的,没有被取消的并且当前不是请求状态中的Request启动起来开始请求。

四级缓存:

活动缓存:优先从活动缓存中查找资源,如果找到直接返回资源。当活动缓存中的资源释放时,将资源放入内存缓存。使用Map缓存资源
内存缓存:当活动缓存中找不到可用资源,从内存缓存中查找,同时将内存缓存中的资源放入活动缓存,并从内存缓存中移除资源。使用LruCache算法进行资源保存。
磁盘缓存:当内存缓存中也找不到可用资源,则从磁盘缓存中查找。同时将资源放入活动缓存。
网络缓存:当磁盘缓存中也找不到时,就从网络加载,并将请求返回的资源存入磁盘缓存中。

 

Glide的三级缓存和四级缓存_第1张图片

Glide最为一个优秀的图片加载框架使用了四级缓存来加载图片。分别为ActiveResources 活动缓存,MemoryCache 内存缓冲,DiskCache 磁盘缓存,Http 网络缓存。如下图所示。

Glide的三级缓存和四级缓存_第2张图片

Glide中的LruCache:

LruCache是一个基于LinkedHashMap的简单的内存缓存类,它根据最近使用的次序保存数据。当缓存达到最大容量时,最近最少使用的数据项会被移除。

在Glide中,LruCache的使用方式如下:

  1. 首先,通过调用Glide的getLruCache()方法获取LruCache实例。

  2. 然后,将需要缓存的图片以键值对的形式存储到LruCache中。

  3. 可以通过调用put()方法来添加或更新图片缓存。

  4. 可以通过调用get()方法来获取图片缓存。

你可能感兴趣的:(glide,缓存)