美文网首页
Android图片框架之Glide

Android图片框架之Glide

作者: xulj100 | 来源:发表于2021-07-07 16:13 被阅读0次

Gilde缓存机制

Glide缓存分为内存缓存和磁盘缓存,其中内存缓存是由弱引用+LruCache组成。

  • 取的顺序是:弱引用、LruCache、磁盘
  • 存的顺序是:磁盘、弱引用、LruCache

1、弱引用

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

Map<Key, ResourceWeakReference> activeEngineResources = new HashMap<>();

2、LruCache

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

#LruCache
Map<T, Y> 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

      本文链接:https://www.haomeiwen.com/subject/kgwoultx.html