Android记录--Glide源码初步阅读

132 阅读1分钟

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方法。

注释中标明:这个方法必须主线程调用

这个方法,会先去检查使用的资源集,再去缓存中读取资源,读不到再请求。以实现高效复用