美文网首页
2020-03-26 Glide学习笔记

2020-03-26 Glide学习笔记

作者: 初夏的雪 | 来源:发表于2020-03-30 11:04 被阅读0次

Glide 三级缓存学习笔记

      学习Glide 框架有一段时间,很多时候都是以懵逼的状态放弃源码阅读,然后有从头梳理,简直是一种折磨,最后只能用之忍之了。最近得到一位专家级别的大师指点,终于从雾霾中找到方向了,今天就在此记录一下学习笔记:

      Glide 框架的核心就是三层缓冲架构,及生命周期管理,下面详细描述:

      1、生命周期管理

        Glide不像其他的第三方框架一样,需要你在宿主(Activity/FragmentActivity)的OnStart()、OnStop()、OnDestory()等回调中处理,而是通过在每一个宿主会自动添加一个无内容的Fragment 来进行对生命周期监听,然后根据生命周期的状态进行对缓冲资源的释放;这也是一个很大的改进与方便之处。

        2、三级缓冲机制

            2.1)活动缓冲

            该缓冲其实也是内存缓存,主要是用户存放正在使用的资源的weakreference ,并通过WeakReferenceQueue 来进行对弱引用的监听回调;

            引用计数:通过引用计数来处理当前正在使用的资源的次数,如果计数为0 ,则释放资源;

            2.2)内存缓冲

            内存缓冲是使用LRUCache的最近最少使用算法(核心数据结构:LinkedHashMap)来实现的; 如果活动缓冲中的资源被释放,则会被动加入到内存缓冲中;

            2.3 )磁盘缓冲

            磁盘缓冲其实就是在SDCard的缓冲目录保存数据,同样采用的LRU的算法;

    那么三种缓冲之间是怎么工作的呢?如下图所示:

流程说明:

UI调用Glide加载图片时,首先会在活动缓冲中根据key进行资源加载,若活动缓冲存在,则直接返回UI进行加载,如果没有找到,则在内存缓冲中查询;

如果内存缓冲中存在,则会将内存缓冲中的资源移除,并加入到活动缓冲中,切活动缓冲计数+1;然后再返回UI显示;如果内存缓冲中不存在,则进入磁盘缓冲查询;

磁盘缓冲中如果存在,则会将磁盘缓冲中的资源加入到活动缓冲中,活动缓冲计数+1,并返回UI显示;若磁盘缓冲不存在,则进行外部资源加载(加载网路数据、或者本地资源);

外部资源加载,加载成功,首先会在磁盘缓冲中保存资源,并将磁盘缓冲中的该资源计入到活动缓冲中去;

缓冲说明:

1、资源:  存放key-value形式的资源,key是唯一标识,也是在整个Glide框架中的关键;key的格式是一个类似于加密后密文的字符串;

2、活动缓冲:使用的是对资源的弱引用weakReference+Queue+引用计数的方式进行管理,引用被移除时,会间接加入到内存缓冲中去;

3、内存缓冲:采用的LRU算法进行管理;

4、磁盘缓冲:采用的LRU算法进行资源管理;

以上内容仅是学习glide时的学习笔记,如有不合之处,欢迎留言讨论。

相关文章

  • 2020-03-26 Glide学习笔记

    Glide 三级缓存学习笔记 学习Glide 框架有一段时间,很多时候都是以懵逼的状态放弃源码阅读,然后有...

  • Glide 学习笔记

    入行一年半的android程序员,半个月前的一个上午还在跟同事讨论发不发年终奖,下午就被裁了。找工作快两个礼拜了,...

  • Glide学习笔记

    来自于 Glide - 开始! 1、依赖: 2、基本使用: 其中几个方法: 1、CenterCrop()和fitC...

  • Glide学习笔记

    默认情况下,Glide会在开始一个新的图片请求(网络请求)之前检查以下多级缓存 在调用Glide.with(act...

  • Glide 4.0学习笔记

    Glide 4.0使用 Glide v4 使用 注解处理器 (Annotation Processor) 来生成出...

  • Glide源码学习笔记

    本文是基于郭霖glide源码解析系列的学习笔记,在此记录一下。 一、fragment巧用: 使用没有界面的frag...

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

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

  • Android - 图片处理之Glide加载进度

    前言 带有加载进度的Glide,看着是不是很好,这里也是给自己做个笔记, 一:原理 Glide 默认肯定是没有这个...

  • Glide笔记

    Glide笔记 一、简介 在泰国举行的谷歌开发者论坛上,谷歌为我们介绍了一个名叫Glide的图片加载库,作者是bu...

  • 精读《终身成长》18/20

    2020-03-26 星期四 1、今日学习(*输入*) 阅读【第8章、改变思维模式(下)】。 精彩书摘: 更多平台...

网友评论

      本文标题:2020-03-26 Glide学习笔记

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