Glide源码探究(二)Glide整体设计

本文参考前辈们的文章,结合源码,从以下角度继续探究Glide的源码设计。个人觉得如果先有一个整体的认识,然后再深入探讨是比较舒服的。本文从以下角度继续探究Glide:

  • Glide整体框架
  • Glide模块间的调用流程
  • Glide库 目录结构
  • Glide的类之间的关系

1.Glide整体框架

在这里插入图片描述
结合上面的图,我们分两步探究这个库的工作原理,
第一步:当我们使用这个Glide库加载图片时,它内部先初始化Glide以及它需要用到的相关组件,关联生命周期,构建请求RequestBuilder,初始化Engine;
第二步:Engine获取数据,具体步骤是先从缓存拿数据(Memory和Active都是内存缓存),拿到了就返回到MainThread;拿不到就调度一个DecodeJob任务从数据源获取数据,拿到数据后通过DecodeJob处理数据,缓存起来然后回调到MainThread。
第三步:回到主线程给View加载对应的资源

2.Glide模块间的调用流程

在这里插入图片描述

3.Glide库 目录结构

在这里插入图片描述

4.Glide的类之间的关系

在这里插入图片描述
这张图反映了类之间的实现,继承,组合关系,其中实心箭头代表组合,空心箭头代表实现implements ,空心圆形代表接口。组合不了解的可以搜一下组合模式。

结合3和4可以看到整个库分为 RequestManager(请求管理器),Engine(数据获取引擎)、 Fetcher(数据获取器)、MemoryCache(内存缓存)、DiskLRUCache(磁盘缓存)、Transformation(图片处理)、Registry(图片类型及解析器配置)、Target(目标) 等模块

通过这篇呢对Glide的整体设计有了一个初步的了解,接下来结合源码分析每一个模块是怎么工作的

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

路漫-其修远兮

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值