美文网首页准备
Glide工作原理

Glide工作原理

作者: 小宏why | 来源:发表于2018-02-22 16:29 被阅读0次

Glide加载发起流程:

1、Glide.with(context)创建RequestManager 

RequestManager负责管理当前context的所有Request

Context可以传Fragment、Activity或者其他Context,当传Fragment、Activity时,当前页面对应的Activity的生命周期可以被RequestManager监控到,从而可以控制Request的pause、resume、clear。这其中采用的监控方法就是在当前activity中添加一个没有view的fragment,这样在activity发生onStart onStop onDestroy的时候,会触发此fragment的onStart onStop onDestroy。

2、RequestManager用来跟踪众多当前页面的Request的是RequestTracker类,用弱引用来保存运行中的Request,用强引用来保存暂停需要恢复的Request。

Glide.with(context).load(url)创建需要的Request 

通常是DrawableTypeRequest,后面可以添加transform、fitCenter、animate、placeholder、error、override、skipMemoryCache、signature等等

3、如果需要进行Resource的转化比如转化为Byte数组等需要,可以加asBitmap来更改为BitmapTypeRequest

4、Request是Glide加载图片的执行单位

Glide.with(context).load(url).into(imageview) 

在Request的into方法中会调用Request的begin方法开始执行

在正式生成EngineJob放入Engine中执行之前,如果并没有事先调用override(width, height)来指定所需要宽高,Glide则会尝试去获取imageview的宽和高,如果当前imageview并没有初始化完毕取不到高宽,Glide会通过view的ViewTreeObserver来等View初始化完毕之后再获取宽高再进行下一步

5、Glide加载资源:

(1) GlideBuilder在初始化Glide时,会生成一个执行机Engine

Engine中包含LruCache缓存及一个当前正在使用的active资源Cache(弱引用)

activeCache辅助LruCache,当Resource从LruCache中取出使用时,会从LruCache中remove并进入acticeCache当中

Cache优先级LruCache>activeCache

(2)Engine在初始化时要传入两个ExecutorService,即会有两个线程池,一个用来从DiskCache获取resource,另一个用来从Source中获取(通常是下载)

线程的封装单位是EngineJob,有两个顺序状态,先是CacheState,在此状态先进入DiskCacheService中执行获取,如果没找到则进入SourceState,进到SourceService中执行下载

 6.Glide的Target:

         负责图片加载的回调

 总结

Glide库在使用过程中表现较好,滑动流畅,内存占用低

代码扩展性极强,4.0版本更加如此,但来的问题就是过于复杂,不太便于阅读

但仍会遇到有些需求Glide无法满足 

设置加载图片的最大宽高

PlaceHolder的图片形状不与加载的Bitmap相同会产生的抖动问题

无法指定删除某一个图片缓存的问题(可以用加signature的方式试其失效并重新下载,但不可以删除)

相关文章

  • Glide工作原理

    Glide加载发起流程: 1、Glide.with(context)创建RequestManager Reques...

  • Glide 图片加载连接超时

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

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

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

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

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

  • Glide 缓存原理实现

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

  • Glide原理

  • glide原理

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

  • 探究Glide的运行原理 (2)

    前言 上一篇探究Glide的运行原理(1))我们主要了解了一下Glide的简介以及简单的使用,同时也对Glide....

  • Android面试 Glide源码流程

    面试问题 简单介绍一下Glide缓存 具体说说Glide的三级缓存原理 Glide加载一个100x100的图片,是...

  • Glide框架初识

    Glide原理 Glide在加载绑定了Activity的生命周期。 在Activity内新建一个无UI的Fragm...

网友评论

    本文标题:Glide工作原理

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