1. 概述和核心类
使用Glide的一般形式为
Glide.with(context).load(url). placeholder(R.drawable.test).into(imageView)。
使用起来相当简单,大家有没有想过内部流程是怎么实现的呢?我是一个喜欢研究源码的人,抱着打破砂锅问到底的想法窥探了下Glide源码,发现这个流程主要与Glide的requests生成与发送过程有关。与它相关的核心类如下
1) Glide:提供了很多static方法,是我们使用的入口,其中的with方法比较关键,之后我们再详细分析
2)RequestManager:进行requests随Activity或Fragment生命周期管理,这部分可参见 Glide源码分析 – 绑定Activity生命周期。这个强大功能是Glide内部实现的,完全不需要用户参与。
3)GenericRequestBuilder: 使用builder模式创建Request,其中的into()方法比较关键,之后详细介绍。它的UML类图如下
针对不同格式的图片,Glide分别做了它们的request builder的实现。其他模块只需要依赖GenericRequestBuilder,满足依赖抽象的原则,后期支持别的格式会很方便,可扩展性强。
4)GenericRequest:实现了Request接口,包含r