本文是基于Activity的生命周期来探究Glide在加载网页图片的流程。首先举一个简单的例子
Glide.with(this)
.load("http://k.zol-img.com.cn/sjbbs/7692/a7691515_s.jpg")
.into(mImageView);
下面展示的是上述代码的时序图。
因为Glide的with方法中传入的是Activity,所以Glide在Activity的onCreate生命周期中是不会开始加载资源的。
Glide图片加载的生命周期管理是被Activity生命周期驱动的,当调用Glide.with(Activity)的过程中,在fragmentGet
函数中会创建一个RequestManagerFragment对象。
在其构造函数中传入了一个ActivityFragmentLifecycle对象。
最后在FragmentManager中加入上面创建好的RequestManagerFragment。这样一来,Glide就实现了对宿主Activity的生命
周期的监听。并通过ActivityFragmentLifecycle来响应不同的生命周期事件。
其中ActivityFragmentLifecycle中有几个集合,如果想接收Activity生命周期回调的对象都可以通过addListener向其注册监听。
RequestManager向ActivityFragmentLifecycle添加监听:
GlideDrawableImageViewTarget向ActivityFragmentLifecycle添加监听: