排序:
默认
按更新时间
按访问量

Glide源码分析(一),基本加载代码流程

下面来看在Glide中最简单的图片加载代码 Glide.with(this) .load("https://p.upyun.com/docs/cloud/demo.jpg") ....

2018-06-12 15:53:32

阅读数:172

评论数:0

Glide源码分析(二),基本加载类图介绍

经过前文Glide源码分析(一),基本加载代码流程的分析之后,想必大家还是有点云里雾里,这里我画出了Glide基本加载流程中涉及到的类以及它们之间的关系,帮助大家更好的理解这个过程。 Glide基本加载过程设计到的主类和关系图如下: 1.Glide Glide这个类是使用...

2018-06-12 15:50:56

阅读数:141

评论数:0

Glide源码分析(三),Engine加载资源过程

通过前面的分析,我们知道真正去加载数据是在SingleRequest#onSizeReady方法中被触发,这个里面是调用了Engine#load方法,看到这个方法,我们大致可以猜到此时便开始去真正加载数据了,从缓存中读取或者是从网络获取等等。在开始之前,我们先简单了解一下Engine类中涉及到的一...

2018-06-12 15:48:45

阅读数:115

评论数:0

Glide源码分析(四),DecodeJob执行过程

开始本文之前,DecodeJob它实现了Runnable接口,敏感的朋友可能已经意识到,加载代码的入口就在这里,会在一个新的线程中去加载资源。DecodeJob这个类的代码非常多,主要有以下几个重要的点。 封装一些从上面传过来的参数信息,不知道是否还有印象,我们的glide大部分信息是通过前面...

2018-06-12 15:45:59

阅读数:100

评论数:0

Glide源码分析(五),EngineJob与DecodeJob代码详细加载过程

在Glide源码分析(三),Engine加载资源过程文中,我们分析到Engine#load的最后一步,创建好了一对EngineJob和DecodeJob,随之调用EngineJob的start方法,启动加载任务。下面分析整个一个执行过程,文中相关情景下的方法特定调用的结果是还是基于一下这段code...

2018-06-12 15:43:00

阅读数:105

评论数:0

Glide源码分析(六),缓存架构、存取命中分析

分析Glide缓存策略,我们还得从之前分析的Engine#load方法入手,这个方法中,展示了缓存读取的一些策略,我们继续贴上这块代码。 Engine#load public <R> LoadStatus load( ...

2018-06-12 15:40:46

阅读数:48

评论数:0

Glide源码分析(七),总纲思路梳理

对于Glide源码分析,基本已经接近尾声,整体下来,整个Glide工程代码量还是比较大的,涉及的知识点以及设计模式也很多,很值得研究一下,这里我贴上github源码中,关于glide工程的一张简单的引用关系。如下: 这样大家面对这个强大的代码库也就不那么不知所措了,最核心的也就是li...

2018-06-12 15:31:12

阅读数:98

评论数:0

DecodeJob结构

DecodeHelper 将DecodeJob中的部分属性,交由DecodeHelper进行管理和操作,使代码更加清晰。关于详细,参考DecodeHelper类相关方法分析 DiskCacheProvider 内部返回了一个DiskCache的对象,具体的默认实现是DiskLruCacheW...

2018-06-11 14:27:00

阅读数:37

评论数:0

DataFetcherGenerator结构

UML如下: DataFetcherGenerator 使用已注册的ModelLoaders{@link com.bumptech.glide.load.model.ModelLoader}和一个模型构造一系列的DataFetchers{@link com.bumptech.gl...

2018-06-11 14:21:59

阅读数:32

评论数:0

DecodeHelper类相关方法分析

DecodeHelper类中,调用的方法,涉及到的东西比较多,最主要的是包括管理组件注册以扩展或替换Glide的默认加载,解码和编码逻辑的Registry类。在Glide类的构造方法中,如下: Glide( @NonNull Context context, @No...

2018-06-11 14:20:26

阅读数:98

评论数:0

DiskCache结构

UML如下: DiskCache 定义了从磁盘缓存中写入和读取的接口。 DiskLruCache 基于文件系统的一个有限空间的缓存,每一个缓存项都有一个字符串的键和一个固定数量的值,每个键必须匹配正则表达式([a-z0-9_-]{1,120})。值可以是字节序列,随机流或者文件...

2018-06-11 14:19:05

阅读数:99

评论数:0

数据加载DataFetcher与ModelLoader结构

UML如下: glide数据加载模块,基本结构如上图所示,DataFetcher定义了取数据的接口,具体的通过何种方式取数据,网络还是本地,均是由其子类实现,接下来我们介绍DataFetcher的几个子类。ModelLoader是一个工厂接口,用于将任意复杂的数据模型转换为具体数据类...

2018-06-11 14:18:03

阅读数:88

评论数:0

Resource结构

UML图如下: Resource 一个包装了特定类型的资源接口,并且能够汇集和重用。 DrawableResource 包装了Drawable相关的资源,其直接子类有BitmapDrawableResource、GifDrawableResource和NonOwnerDrawa...

2018-06-11 14:16:51

阅读数:37

评论数:0

MemoryCache结构

UML如下: MemoryCache 定义了在内存中添加和移除资源的接口,还提供了获取当前缓存信息的接口,如缓存最大值以及当前的缓存大小(单位字节)。 ResourceRemovedListener 在缓存中,每当有资源被移除,该接口会得到回调。 MemoryCacheAdap...

2018-06-11 14:15:40

阅读数:130

评论数:0

Key结构

UML如下: Key 唯一标识一些数据的接口。实现必须实现{Object#equals(Object}和{Object#hashCode()}。 通常希望实现将所有在{@link java.lang.Object#equals(Object)}}和{@link Object#ha...

2018-06-11 14:14:37

阅读数:46

评论数:0

Glide源码分析索引

gilde源码分析,所有分析均是基于glide tag 4.7.1的代码。 系列文章如下: Glide源码分析(一),基本加载代码流程 Glide源码分析(二),基本加载类图介绍 Glide源码分析(三),Engine加载资源过程 Glide源码分析(四),DecodeJ...

2018-06-11 14:12:55

阅读数:80

评论数:0

Glide源码分析(八),Glide的自定义模块扩展与实践

Generated API Glide v4使用注解处理器(Annotation Processor)来生成出一个API,在Application模块中可使用该流式API一次性调用到RequestBuilder,RequestOptions和集成库中所有的选项。 GeneratedAPI模式的...

2018-06-11 14:07:34

阅读数:83

评论数:0

FirebaseCrash和自定义Thread.UncaughtExceptionHandler的兼容处理

最近在项目中集成了Firebase的crash报告插件,遇到了一个小的问题,由于项目中之前也使用的自定义的Thread.UncaughtExceptionHandler(具体实现是重启了app,并屏蔽掉了系统的应用程序停止的弹框),导致覆盖掉了Firebase这个对异常处理的设置. public...

2018-01-13 23:38:41

阅读数:70

评论数:0

Java多线程-生产者和消费者

java 多线程

2017-02-09 17:28:40

阅读数:190

评论数:0

art虚拟机缓存文件创建patchoat进程的分析

javaVM patchoat art android5.1

2016-12-03 16:03:03

阅读数:1154

评论数:0

提示
确定要删除当前文章?
取消 删除
关闭
关闭