分析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生命周期注入原理

接着通过Glide源码来分析其类的角色:如图

分析Glide生命周期注入原理

在SupportRequestManagerFragment 持有ActivityFragmentLifecycle.

activity生命周期变化---->SupportRequestManagerFragment生命周期变化--->ActivityFragmentLifecycle

调用onStop,onDestory,onStart()  等方法通知观察者。----> 在观察者RequestManager 中做图片的业务处理。