2.25 Glide源码解析
2.22.1 Glide
- 使用
GlideApp.with(context)
.load(imageUrl)
.into(imageView);
- 架构图(引用自Glide 源码分析])

- 接口层,
Glide,RequestManager Engine, 包含EngineJob,DecodeJob- 缓存, 包含内存缓存, 两级缓存,即可
activeResource和MemoryCache, 磁盘缓存
2.22.1 Glide流程
Glide#with, 判断Context的生命周期是否合法, 获取RequestManagerRequestManager#load, 构建RequestBuilderRequestBuilder#into, 先构建ViewTarget,ViewTarget#setRequest,SingleRequest#begin->Engine#load, 启动加载图片Engine#load, 从#activeResource缓存加载(使用HashMap弱引用图片), 如无命中则从二级缓存MemoryCache加载(使用lru算法, 即LinkedHashMap), 如无命中则启动EngineJob, 调度DecodeJob和处理回调,DecodeJob真正加载和缓存资源, 根据disk缓存策略决定是否从缓存加载, 加载通过生成Generator-> 实例化ModelLoader, 最后IO和解码