1. 概述和核心类
在Glide源码分析 – request创建与发送过程一文中,我们谈到request最终通过GenericRequest的onSizeReady()方法进行,其中调用了engine.load()方法去实际获取数据。本文主要讲述engine.load()之后发生的那些事,让大家能够对底层数据获取有个更清晰的认识。从这点也可以看出Glide设计分层的精妙。主要涉及的核心类如下
1)GenericRequest:定义了很多对request的处理方法,我们比较关心的是request的发送,它的入口是begin(),会调用到onSizeReady(),最终调用到engine.load(),也就是数据获取部分的入口
2)Engine:封装了数据获取的很多关键方法,向request层提供这些API,比如load(), release(), clearDiskCache()等方法。可以认为是一个外观模式。
3)MemoryCache:内存缓存类,先从缓存中获取数据,如果没有才做后面的工作。这是第一级缓存。Glide采用了两级缓存模式。第二级缓存为DiskLruCache,为磁盘缓存。获取磁盘缓存比较耗时,需要在子线程中进行,故而在DecodeJo