图片框架 - Glide 4.11.0源码走读

2020-07-03  本文已影响0人  Stan_Z

本篇文章对Glide最新4.11.0版本做一个宏观解析,目的是把握下Glide的大框架,有了宏观了解之后,再剖析细节就比较容易了。

源码解析:

Glide.with(this).load(url).into(imageView);
按如上代码,总结流程图和类图来从执行流程和类关系两个维度来解析下Glide的基础框架。

一、流程图

1.1 with

with过程
with主要干两件事:

1.2 load

load过程
流程以加载String url为例。

load主要干一件事情:

request获取图片逻辑:


Engine图片资源获取管理逻辑
图片获取方式

优先级:当前正在使用的缓存 > LruCache > 网络/磁盘

二、类图

这里只梳理下核心类的关系


Glide类关系图

简单总结下理解:

Glide.with(this).load(url).into(imageView);

Glide是一个单例的调用入口类。
with:初始化RequestManager,绑定生命周期。
load:加载资源并初始化RequestBuilder。
into:由RequestBuilder构建Request和Target交由RequestManager去处理。

核心功能全部交给RequestManager来处理:
通过with、load、into三板斧后,给到RequestManager的工作内容:

RequestManager左膀右臂TargetTracker、RequestTracker,前者负责绑定页面生命周期,后者负责剩下两项工作。

Request通过Engine来管理图片加载,按:活跃内存>LruCache>网络/磁盘 优先级获取图片资源。具体图片获取由对应的DataFetcher来处理,然后交给DecodeJob去做图片的解码。最后通过回调返回给Target去设置图片。

上一篇下一篇

猜你喜欢

热点阅读