Glide
Glide框架是Android开发常用的图片加载框架。先来简单看下主流程
常用方式是:
Glide.with(context).load(url).into(imageview)
Glide.with(context)
return getRetriever(context).get(context);
返回一个RequestManager,也就是请求管理
Glide框架通过RequestManagerRetriever管理多个RequestManager。通过传递的context进行查找复用
将RequestManager与context的生命周期绑定
load()
return asDrawable().load(string);
asDrawable函数,构建了RequestBuilder对象进行返回,new对象的时候,接收了RequestManager的this作为参数
也就是说,load实际调用的是RequestBuilder对象的load方法
后续配置plcaeholder,或者硬盘缓存,其实都是在配置RequestBuilder
into
调用的是RequestBuilder的into函数。
这个函数中,解析配置,构建了Request对象,包含目标view,请求参数,配置,返回回调
逐层调用:
requestManager.track(target, request);
targetTracker.track(target);
requestTracker.runRequest(request);
request.begin();
到这里,准备开始资源请求
调用到SingleRequest的begin方法
onSizeReady(overrideWidth, overrideHeight);
engine.load
至此,才调用到Glide引擎的load方法。
注释中标明:这个方法必须主线程调用
这个方法,会先去检查使用的资源集,再去缓存中读取资源,读不到再请求。以实现高效复用