分析Glide生命周期注入原理
用过Glide 图片加载框架的都知道,当一个页面销毁 或者 不可见(onStop)后 ,这个页面所要加载的图片会做
一些处理,这个过程是框架完成的 ,不需要开发者来操作。这个是怎么实现的呢?
其实很简单,就是把Activity的生命周期 同步给 网络加载组件。比如 当Activity的onStop 方法回调时,
最终会调用到网络组件的onStop方法,这样就可以实现。
如何将activity的生命周期传递给网络组件?
给activity设置Fragment 和 利用观察者模式。
给activity设置Fragment :
首先给activity添加一个fragment,我们都知道,activity如果有Fragment,那么当activity生命周期方法回调时
同时也会回调Fragment的生命周期方法。
利用观察者模式:
观察者 就是网络组件,被观察者就是生命周期接口。当activity生命周期发送变化时,会触发被观察者的 相应方法,
来简介通知给观察者,也就是网络组件,到此就达到目的。
总结起来就是 :
给activity 添加一个Fragment
当activity生命周期变化时会触发Fragment生命周期变化。
Fragment持有一个被观察者。
Fragment生命周期变化后 通知被观察者,
被观察者 再通知观察者,而观察者就是网络组件。
我们先用图来了解一下观察者模式:
接着通过Glide源码来分析其类的角色:如图
在SupportRequestManagerFragment 持有ActivityFragmentLifecycle.
activity生命周期变化---->SupportRequestManagerFragment生命周期变化--->ActivityFragmentLifecycle
调用onStop,onDestory,onStart() 等方法通知观察者。----> 在观察者RequestManager 中做图片的业务处理。