
Glide4.9
demokiller
只是一个程序猿
展开
-
Glide4.9.0 SourceGenerator 源码解析
一、作用/** * Generates {@link com.bumptech.glide.load.data.DataFetcher DataFetchers} from original source data * using registered {@link com.bumptech.glide.load.model.ModelLoader ModelLoaders} and the...原创 2019-03-14 12:25:38 · 536 阅读 · 0 评论 -
Glide4.9.0 数据转换设计思路
在Glide中,model其实是一个抽象的概念,无论你是缓存读取,还是从网络获取,资源所在的路径就称为model。所以,无论是SourceGenerator,DataCacheGenerator,还是ResourceCacheGenerator在从model(缓存或者网络)中获取数据之后都需要走一次data->transcode过程(ResourceCacheGenerator可以跳过tra...原创 2019-03-19 12:16:20 · 514 阅读 · 0 评论 -
Glide4.9.0 DataCacheGenerator 源码解析
从Glide4.9.0源码 整体概述(二)可以看到,DataCacheGenerator 的入口方法是startNext,所以我们可以先从这个方法入手。//DataCacheGenerator@Override public boolean startNext() { //modelLoaders为null,或者modelLoaderIndex >=modelLoaders....原创 2019-03-19 11:34:11 · 377 阅读 · 0 评论 -
Glide4.9.0源码 整体概述(二)
一、Decodejob的启动在Glide源码 整体概述(一) 中说到调用Engine.load()方法将会真正启动一个任务,接下来看看是如何启动的。//Engine.javapublic synchronized <R> LoadStatus load( GlideContext glideContext, Object model, Key.原创 2019-03-14 00:59:58 · 290 阅读 · 0 评论 -
GLide4.9.0 buildRequestRecursive 源码解析
先附上代码,后面有空加上注释。private Request buildRequestRecursive( Target<TranscodeType> target, @Nullable RequestListener<TranscodeType> targetListener, @Nullable RequestCoordinat...原创 2019-03-18 18:01:44 · 279 阅读 · 0 评论 -
Glide4.9.0源码 整体概述(一)
基于源码4.9.0分析,不同版本可能会有所差异,先说整体,后面分节说细节!Glide最简单的使用就是Glide.with(this).load(url).into(view),我们注意分析这个过程发生了什么。一、初始化Glide,创建RequestManagerGlide.with(this),这里主要是使用GlideBuilder生成Glide,通过Glide获取RequestManage...原创 2019-03-13 12:27:21 · 850 阅读 · 1 评论 -
Glide4.9.0 getModelLoaders 源码解析
一、概述GLide中所有的下载器,解码器,编码器,转换器等都是通过Registry管理的,在生成Registry实例的时候会把内置的所有注册好,以供后续选择使用。//Registry.java private final ModelLoaderRegistry modelLoaderRegistry; private final EncoderRegistry encoderRegis...原创 2019-03-17 21:43:12 · 303 阅读 · 0 评论 -
Glide4.9.0 ResourceCacheGenerator 源码解析
一、作用/** * Generates {@link com.bumptech.glide.load.data.DataFetcher DataFetchers} from cache files * containing downsampled/transformed resource data. */根据官方注释,关键词downsampled/transformed,就是我们获取到...原创 2019-03-19 18:13:00 · 539 阅读 · 0 评论 -
Glide4.9.0 任务生命周期管理
一、概述众所周知,Glide会根据一定的条件自动管理任务的开始和暂停,那么这个具体条件是什么呢?这篇文章将会探索其中的秘密。主要根据调用Glide.with(T)的不同分为2种情况。1、可以找到T对应的Activity或者android.app.Fragment(Android3.0版本之前是android.support.v4.app.Fragment或者FragmentActivity),使...原创 2019-04-01 00:17:29 · 501 阅读 · 0 评论