上篇文章中讲解了Glide通过Activity生命周期来管理图片加载流程。
本文主要分析当添加的Fragment的onStart被会掉时,Glide所做的相关操作。
首先给出流程图:
通过上面的流程图可以知道,Glide注册到ActivityFragmentLifecycle的三个监听得到了回调。
首先被回调的是DefaultConnectivityMonitor的onStart方法,回调中主要是对网络连接状态添加了一个广播监听。
然后GlideDrawableImageViewTarget的onStart方法被回调,这里会开始GlideDrawable的动画,因为还没有加载图片,所以resource为空,不会有动画执行。
最后被回调的监听就是RequestManager注册的监听,从这里开始未完成的图片加载请求。
开始加载图片之前,首先会判断当前ImageView的尺寸是否已经确定。确定View尺寸的过程中,首先判断有没有设置overrideWidth和overrideHeight,若果没有那么就通过LayoutParams来获取大小。如果上述过程没有获取到View确切的大小,那么就对ImageView添加一个addOnPreDrawListener监听。
那么在begin方法中,如果有设置PlaceholderDrawable且图片在在还没完成,那么此Drawable会被设置到ImageView中。
通过上面的分析onStart的回调已经走完了,但是图片的加载还是没有真正的开始。原因是例子中的ImageView没有指定overWidth和overHeight,以及控件具体的大小。但是ImangeView有添加一个addOnPreDrawListener回调,图片的加载将从此真正的开始。