Glide最基本的用法就是三步走:先with(),再load(),最后into()。
with()方法的重载种类非常多,既可以传入Activity,也可以传入Fragment或者是Context。
都是先调用RequestManagerRetriever的静态get()方法得到一个RequestManagerRetriever对象,这个静态get()方法就是一个单例实现,然后再调用RequestManagerRetriever的实例get()方法,去获取RequestManager对象。
如果在Glide.with()方法中传入的是一个Application对象
因为Application对象的生命周期即应用程序的生命周期,因此Glide并不需要做什么特殊的处理,它自动就是和应用程序的生命周期是同步的,如果应用程序关闭的话,Glide的加载也会同时终止。
不管你在Glide.with()方法中传入的是Activity、FragmentActivity、v4包下的Fragment、还是app包下的Fragment,最终的流程都是一样的,那就是会向当前的Activity当中添加一个隐藏的Fragment。
某个Activity上正在加载着一张图片,结果图片还没加载出来,Activity就被用户关掉了,因为Fragment的生命周期和Activity是同步的,如果Activity被销毁了,Fragment是可以监听到的,这样Glide就可以捕获这个事件并停止图片加载了。
由于with()方法返回的是一个RequestManager对象,所以load()方法是在RequestManager类当中的,而且RequestManager中也有很多个load()方法的重载,如果不指定类型,load方法默认置为asDrawable(),然后通过返回的RequestBuilder类中的load()加载图片,最终返回RequestBuilder<Drawable>。
而我们实际使用的时候会有加载asBitmap()、asFile()等操作,也就说明了Gilded支持加载各种各样的图片资源,包括网络图片、本地图片、Uri对象、String字符串等。最后调用RequestManager类的apply方法返回RequestBuilder<TranscodeType>对象。
调用RequestBuilder的into方法,返回了一个Target对象,Target对象则是用来最终展示图片用的()