美文网首页
Glide原理总结

Glide原理总结

作者: Johnson_Coding | 来源:发表于2021-02-25 16:12 被阅读0次

with()
1,主要就是配置glide绝大部分信息并向当前的Activity当中添加一个隐藏无UI的Fragment,这个特殊的Fragment持有一个Lifecycle。通过Lifecycle通知RequestManger进行相关的操作并且最终返回一个requsetManager对象执行load方法。
load()
load过程就是收集配置信息,最终返回RequestBuilder对象,通过这个对象我们就可以根据传入的mode是url还是本地文件或者其他的资源,然后获得图片请求的request,方便在into方法中使用。
into()
构建具体图片加载对象并通过Engine这个核心类加载出来。

Glide的缓存

主要分为2种缓存,一种是内存缓存,一种是磁盘缓存。之所以使用内存缓存的原因是:防止应用重复将图片读入到内存,造成内存资源浪费。之所以使用磁盘缓存的原因是:防止应用重复的从网络或者其他地方下载和读取数据。而它内部实际是有三级缓存机制。

三级缓存(Lru算法缓存、弱引用缓存、磁盘缓存)

当我们的APP中想要加载某张图片时,先去LruCache中寻找图片,如果LruCache中有,则直接取出来使用,如果LruCache中没有,则去WeakReference中寻找,如果WeakReference中有,则从WeakReference中取出图片使用,同时将图片重新放回到LruCache中,如果WeakReference中也没有图片,则去文件系统中寻找,如果有则取出来使用,同时将图片添加到LruCache中,如果没有,则连接网络从网上下载图片。图片下载完成后,将图片保存到文件系统中,然后放到LruCache中。

LRUCache 原理

把最近使用的对象用强引用存储在 LinkedHashMap 中,当缓存满时,把最近最少使用的对象从内存中移除,并提供 get/put 方法完成缓存的获取和添加LruCache 是线程安全的,因为使用了 synchronized 关键字。LinkHashMap继承HashMap,在 HashMap的基础上,新增了双向链表结构,每次访问数据的时候,会更新被访问的数据的链表指针,具体就是先在链表中删除该节点,然后添加到链表头header之前,这样就保证了链表头header节点之前的数据都是最近访问的。

glide优点:

1.Glide 不仅是一个图片缓存,它支持 Gif、WebP、缩略图。
2.绑定界面的生命周期
3.高效的缓存策略:三级缓存
4.Picasso 只会缓存原始尺寸的图片,而glide不一样,它会为每个不同尺寸的Imageview缓存一张图片,也就是说不管你的这张图片有没有加载过,只要imageview的尺寸不一样,那么Glide就会重新加载一次

  1. 内存开销小:RGB是最小格式。
    6.使用简单方便。

相比其他图片加载库(Picasso & Fresco)

1.对比Picasso
Glide RGB格式更小内存开销更少,picasso缓存原图,glide缓存的是跟ImageView尺寸相同的。
glide可以加载gif,WebP、缩略图。
2.对比Fresco
Fresco将图片放到一个特别的内存区域,可以大大减少OOM(在更底层的Native层对OOM进行处理,图片将不再占用App的内存)但是fresco包体积较大
对于一般App来说,Glide完全够用,而对于图片需求比较大的App,为了防止加载大量图片导致OOM,Fresco 会更合适一些。在红星图片使用场景很多的地方就是fresco 。

相关文章

  • Glide 缓存原理实现

    Glide 缓存原理实现 专注于Android开发,分享经验总结,欢迎加入QQ群:686809487 Glide缓...

  • Glide原理总结

    with()1,主要就是配置glide绝大部分信息并向当前的Activity当中添加一个隐藏无UI的Fragmen...

  • Glide 图片加载连接超时

    参考文章 Glide 4.x添加自定义组件原理Glide 系列-1:预热、Glide 的常用配置方式及其原理Gli...

  • glide缓存

    Glide[https://github.com/bumptech/glide] 总结 Glide缓存简介 Gli...

  • Glide 源码学习补漏,Glide 图片缓存原理探究

    基于 Gilde 4.3.1 上一篇Glide 源码学习,了解 Glide 图片加载原理中分析了 Glide 加载...

  • Glide源码解析(4.X版本)

    知识点汇总: 一:Glide项目概述 二:Glide加载图片的原理 三:Glide三级缓存的设计 四:Glide如...

  • Glide原理

  • glide原理

    首先先了解图片三级缓存: 三级缓存可以减少不必要的流量消耗,增加加载速度1,内存缓存,优先加载,速度最快2.本地缓...

  • android 图片加载框架

    哪三大图片加载框架? 介绍: 总结: 本文总结使用Glide gradle中导入Glide 代码中使用 为Glid...

  • 三方框架原理分析总结

    三方框架原理分析总结 Glide的缓存机制 配上代码来说,统一的key,依据key去找;代码在Engine中key...

网友评论

      本文标题:Glide原理总结

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