美文网首页Android相关
Glide源码解析(一)Glide生命周期的绑定

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

作者: Condor_c33a | 来源:发表于2018-04-04 09:52 被阅读68次

    Glide.with()这个方法调用

    图一

    当requestManagerRetriever.get()返回RequestManagerRetriever对象

    RequestManagerRetriever调用get方法

    图二

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

    图三

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

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

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

    图四

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

    图五

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

    图六

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

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

    相关文章

      网友评论

        本文标题:Glide源码解析(一)Glide生命周期的绑定

        本文链接:https://www.haomeiwen.com/subject/lfkmcftx.html