Glide源码探究
路漫-其修远兮
梦想还是要有的!
展开
-
Glide源码探究 (一)关于Glide
参考网上几篇Glide源码的介绍,也想看看Glide内部怎么实现的,顺便膜拜下Google大佬们的设计思想,话不多说,来吧~ 本篇不介绍Glide的具体使用,后面的操作符也只代表glide的常用功能,详细使用可以参考官方文档。本文主要介绍了以下几个方面: glide是什么,它能干什么,为什么是它? 和之前的图片加载框架的比较 Glide的操作符 1.glide是什么,它能干什么,为什么是它? ...原创 2019-06-05 15:37:21 · 255 阅读 · 0 评论 -
Glide源码探究(二)Glide整体设计
本文参考前辈们的文章,结合源码,从以下角度继续探究Glide的源码设计。个人觉得如果先有一个整体的认识,然后再深入探讨是比较舒服的。本文从以下角度继续探究Glide: Glide整体框架 Glide模块间的调用流程 Glide库 目录结构 Glide的类之间的关系 1.Glide整体框架 结合上面的图,我们分两步探究这个库的工作原理, 第一步:当我们使用这个Glide库加载图片时,它内部先初...原创 2019-06-05 15:33:00 · 207 阅读 · 0 评论 -
Glide源码探究(三)Glide请求构建过程
本篇结合源码讲解Glilde的构建过程,我们知道Glide的使用是非常简单的,例如: Glide.with(this) .load(android.R.mipmap.sym_def_app_icon) .into(mImageView); Glide使用非常简单,通过上面的一行代码就可以给我们的mImageView加载一张图片;Glide的内部为我们做了大量的工作,都有些什么呢?今天我们来探究的...原创 2019-06-05 19:14:19 · 249 阅读 · 0 评论 -
Glide源码探究(五)对生命周期管理下
上一篇我们分析到Glide.with方法内部做了很多初始化操作,最终返回一个RequestManager对象。 问题:我们请求构建完成以后紧接着做了什么处理? //RequestManager.java public RequestBuilder<Drawable> load(@RawRes @DrawableRes @Nullable Integer resourceId) { r...原创 2019-06-06 18:11:37 · 201 阅读 · 0 评论 -
Glide源码探究(六)数据加载与缓存
上篇我们知道请求构建完成并不是立马会去加载资源,而是对请求做了管理,从而知道当前需不需要加载资源,最大化的优化性能及用户体验,这一点是十分值得我们学习借鉴的。 问题: 1.数据资源加载过程是怎样的? 2.首次加载资源是怎么缓存的? 带着这两个问题,接下来我们接着上篇继续探讨: //Engine.java public synchronized <R> LoadStatus load( ...原创 2019-06-06 18:12:39 · 197 阅读 · 0 评论 -
Glide源码探究(四)Glide对生命周期的管理上
用过Glide的小伙伴都知道,图片加载会和Activity/Fragment的生命周期保持一致,并且有对应的 trimMemory 接口实现可供调用。那么Glide是怎么实现和Activity/Fragment的生命周期保持一致的么?带着这个疑问我们来探究下源码。 仍然以Glide.with(context).load(url).into(mImageView)说起 我们知道with方法有很多重载...原创 2019-06-06 18:14:07 · 290 阅读 · 1 评论