详谈高大上的图片加载框架Glide -源码篇

577 查看

在上篇文章中,我们介绍了Glide图片加载框架的使用,通过之前的学习,我们可能已经能熟练的将Glide图片加载框架运用到我们的项目中,但是如果有人问你它是如何加载,工作原理是怎样的?为什么自定义GlideModule只需要在Manifest文件中加入meta-data即可?等等很多加载流程以及使用的注意事项。当然要想搞明白这些问题,就需要我们对Glide源码有个大致的认识,去剖析源码深处的奥秘。

接下来就让我们一起去进入Glide的源码世界,本篇文章分析的是Glide 3.7.0版本。特别提醒,阅读本篇文章之前要对Glide的用法要先有一个了解,可以先阅读上篇文章,详谈高大上的图片加载框架Glide -应用篇

此篇文章是自己学习的一个记录,若对阅读文章的你有一定帮助,很是高兴,当然文章如有不足或者错误的地方,欢迎指正,避免我给其他读者错误引导

如果你阅读过上篇文章,或者你使用过Glide,就知道Glide加载图片的最简单方式就是

那么这篇文章就以这句简单的代码为主线,逐步深入Glide的源码。

Glide.with(context)

Glide有四个静态的重载方法with(),其内部都通过RequestManagerRetriever相应的get重载方法获取一个RequestManager对象。RequestManagerRetriever提供各种重载方法的好处就是可以将Glide的加载请求与Activity/Fragment的生命周期绑定而自动执行请求,暂停操作。

接下来我们拿Activity参数分析Glide请求如何和绑定生命周期自动请求,暂停,以及销毁。

assertNotDestroyed主要断言Activity是否已经Destroyed。若是没有销毁,或者Activity的FragmentManager ,然后通过fragmentGet返回RequestManager。