
源码阅读
大雀儿飞飞
这个作者很懒,什么都没留下…
展开
-
Glide源码分析(一)——DiskLruCache磁盘缓存的实现
Glide源码分析(一)——DiskLruCache磁盘缓存的实现Glide磁盘的实现主要是通过DiskLruCache来实现的。DiskLruCache并非针对Glide编写的,而是一个通用的磁盘缓存实现,虽然并非Google官方的代码,但是已经在很多应用中得到了引入使用。journal日志DiskLruCache通过日志来辅助保证磁盘缓存的有效性。在应用程序运行阶段,可以通过内存数据来保证缓存的原创 2017-03-23 19:02:13 · 2375 阅读 · 0 评论 -
Glide源码分析(二)——磁盘缓存实现
Glide中默认磁盘缓存实现的入口为DiskLruCacheFactory,DiskLruCacheFactory提供了几个接收不同参数的构造函数,以允许指定缓存文件的位置和磁盘缓存的大小。其中比较有意思的是,在构造函数中DiskLruCacheFactory并没有立即构建缓存的File,而是在build函数执行的时候才开始构建缓存File,这算是懒加载的一种吧,即在真正需要使用到缓存的时候才去申请原创 2017-03-23 19:06:55 · 1320 阅读 · 0 评论 -
Glide源码分析(三)——图片缓存相关实现
LruBitmapPoolGlide实现bitmap缓存的实现类。其缓存功能实现的核心依赖于两个类:SizeConfigStrategy和AttributeStrategy,在API 19之前,使用AttributeStrategy,之后使用SizeConfigStrategy。两种strategy在缓存的功能实现上是一致的,SizeConfigStrategy只是在获取缓存的时候,不严格要求缓存中原创 2017-03-23 19:14:01 · 1340 阅读 · 0 评论 -
Glide源码分析(四)——Registry机制
Registry是Glide内部实现的模块挂接中心,它建立了功能需求和实现模块之间的映射关系,使这些模块能够根据需求进行灵活的挂载,模块和模块之间又相互独立互不影响,很好地实现了系统功能的解耦。 在Registry内部,提供了对如下几种类型模块的挂载支持:/** * 数据加载模块 */private final ModelLoaderRegistry modelLoaderRegistry;原创 2017-03-23 19:16:00 · 1618 阅读 · 0 评论 -
Glide源码分析(五)——ModelLoader机制
ModelLoaderRegistryModelLoaderFactory和MultiModelLoaderFactoryModelLoaderFactory是一个工厂类接口,实现类使用它的接口来对外构建不同了类型的modelLoader,它的实现类一般是不同类型的ModelLoader的内部类,例如ByteArrayLoader内部就实现了两个ModelLoaderFactory,分别生成能够将b原创 2017-03-23 19:17:29 · 3122 阅读 · 0 评论 -
Glide源码分析(六)——从DecodeJob相关实现看图片加载流程
DecodeJob是集数据加载、解析和回调通知于一体的包装内,它在内部根据配置的不同情况将相关的工作委托给不同的类来实现,是Glide内实现数据加载功能的中枢。首先来看其中会用到的几个比较重要的类。LocalPath和DecodePathDecodePath内部保存有两个主要的成员,一个是由ResourceDecoder组成的解码器集合,用来从指定的数据源中解码数据;另一个是ResourceTran原创 2017-03-23 19:19:06 · 1010 阅读 · 1 评论