Glide源码解析(一)Glide生命周期的绑定

Glide.with()这个方法调用

图一

当requestManagerRetriever.get()返回RequestManagerRetriever对象

RequestManagerRetriever调用get方法

Glide源码解析(一)Glide生命周期的绑定_第1张图片
图二

这个方法判断了Glide.with时候传入的context,根据context调用不同的方法,以:this.get((FragmentActivity)context);举例

Glide源码解析(一)Glide生命周期的绑定_第2张图片
图三

判断当前线程是否在主线程,不是的话回去调用图二中的getApplicationManager方法,咱们只看是主线程的问题

当在主线程,判断了当前的activity是不是被销毁,销毁则抛异常

否则获取当前acticity的FragmentManager对象调用图三方法,并且将当前的ac的fragmentManager传递进去


Glide源码解析(一)Glide生命周期的绑定_第3张图片
图四

第一个方法:this.getSupportRequestManagerFragment(fm),通过这里面获取一个自定义的fragment,图五的方法

Glide源码解析(一)Glide生命周期的绑定_第4张图片
图五

他会根据tag获取fragment,避免一个activity中多次使用Glide时候重复创建问题,也会在自己的缓存map中去查找,是否存在,如果不存在的话则会创建,咱们看这个类中的生命周期方法,都有lifecycle它是在类创建的时候同时创建图六

Glide源码解析(一)Glide生命周期的绑定_第5张图片
图六

继续解读图三中的方法,首次的时候requestManage肯定是空的,所以创建requestManager,并将requestManager和lifecycle设置到SupportRequestManagerFragment中去。这样requestManager和SupportRequestManagerFragment关联,requestManager里面维护lifecycle集合(这是一个典型的观察者模式)

这样图一Glide.with方法就获取到了RequestManager对象,并且RequestManager创建的时候创建了Glide对象

你可能感兴趣的:(Glide源码解析(一)Glide生命周期的绑定)