Android图片框架之Glide

Gilde缓存机制

Glide三级缓存分别为:活动缓存、内存缓存、磁盘缓存

  • 取的顺序是:活动缓存、LruCache、磁盘缓存
  • 存的顺序是:磁盘缓存、活动缓存、LruCache

1、活动缓存(HashMap)

活动缓存是由这样一个HashMap维护,key是缓存的key,这个key由图片url、width、height等10来个参数组成;value是图片资源对象的弱引用形式。

Map activeEngineResources = new HashMap<>();

2、内存缓存(LruCache)

LruCache是由一个LinkedHashMap维护,根据Lru算法来管理图片。大致的原理是利用LinkHashMap链表的特性,把最近使用过的文件插入到列表头部,没使用的图片放在尾部;然后当图片大小到达预先设置的一个阀值的时候 ,按算法删除列表尾部的部分数据。

#LruCache
Map cache = new LinkedHashMap<>(100, 0.75f, true);

3、磁盘缓存原理(DiskLruCache)

  • DiskCacheStrategy.DATA: 只缓存原始图片;
  • DiskCacheStrategy.RESOURCE:只缓存转换过后的图片;
  • DiskCacheStrategy.ALL:既缓存原始图片,也缓存转换过后的图片;对于远程图片,缓存 DATA和 RESOURCE;对于本地图片,只缓存 RESOURCE;
  • DiskCacheStrategy.NONE:不缓存任何内容;
  • DiskCacheStrategy.AUTOMATIC:默认策略,尝试对本地和远程图片使用最佳的策略。当下载网络图片时,使用DATA(原因很简单,对本地图片的处理可比网络要容易得多);对于本地图片,使用RESOURCE。

你可能感兴趣的:(Android图片框架之Glide)