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

Glide中的LruCache:

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

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

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

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

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

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

Glide加载策略

  1. DiskCacheStrategy.NONE:不缓存文件。
  2. DiskCacheStrategy.SOURCE:只缓存原图。
  3. DiskCacheStrategy.RESULT:只缓存最终加载的图(默认的缓存策略)。
  4. DiskCacheStrategy.ALL:同时缓存原图和结果图。
  • 19
    点赞
  • 15
    收藏
    觉得还不错? 一键收藏
  • 2
    评论
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值