Glide源码
yuanchuanshun
这个作者很懒,什么都没留下…
展开
-
Glide源码——Engine EngineJob部分
之前的文章分析了Engine获取ActiveResource、LruResourceCache两个缓存部分,当EngineKey没有找到对应的缓存时,Engine就需要通过EngineJob来获取资源。本篇文章涉及到的类:EngineJob、Jobs。 首先判断是否有正在进行的EngineKey的EngineJob,有则把当前cb(其实是SingleRequest)传递给该EngineJob等待回调资源,然后直接返回。 EngineJob<?> current = jobs.get(key原创 2021-05-18 17:37:00 · 150 阅读 · 0 评论 -
Glide源码——Engine活动资源、内存缓存部分
本篇文章涉及ActiveResource、EngineResource、EngineKey、MemoryCache、LruResourceCache类。 通过分析SingleRequest的源码我们知道,图片的加载是从Engine.load()开始: public synchronized <R> LoadStatus load( GlideContext glideContext, Object model, Key signature, int width, int heigh原创 2020-12-21 22:47:22 · 214 阅读 · 0 评论 -
Glide源码——SingleRequest
在分析RequestBuilder代码的时候我们提到,在调用into()方法的最后调用了requestManager.track(target, request)方法,从这里开始才是真正的去加载图片。 synchronized void track(@NonNull Target<?> target, @NonNull Request request) { targetTracker.track(target); requestTracker.runRequest(request);原创 2020-12-15 18:22:15 · 331 阅读 · 0 评论 -
Glide源码——RequestManager
RequestManager主要有两个作用: 1.创建RequestBuilder; 2.通过生命周期管理请求的启动结束等; 创建RequestBuilder入口方法是as(Class<ResourceType> resourceClass): public <ResourceType> RequestBuilder<ResourceType> as( @NonNull Class<ResourceType> resourceClass) {原创 2020-12-06 23:10:15 · 707 阅读 · 0 评论 -
Glide源码——RequestManagerRetriever
RequestManagerRetriever类负责RequestManager的创建,并通过创建RequestManagerFragment /SupportRequestManagerFragment 并与RequestManager进行绑定,来赋予RequestManager生命周期。这篇文章会涉及到com.bumptech.glide.manager目录下这么几个文件: RequestManagerRetriever、RequestManagerFragment、SupportRequestMa.原创 2020-12-04 21:21:50 · 532 阅读 · 0 评论 -
Glide源码——初始化
基于Glide v4.9,调用Glide.with(Context context)的时候,会触发Glide的初始化,内部是一个单例静态变量glide,初始化方法:initializeGlide(context, new GlideBuilder())。如果不希望使用Glide的默认配置,那么可以调用Glide的静态方法:public static synchronized void init(@NonNull Context context, @NonNull GlideBuilder builder),原创 2020-12-04 19:50:57 · 354 阅读 · 0 评论