Glide 监听Activity或Fragement的生命周期原理
当一个对象的状态变化时,通知另一个对象,很容易想到用到了观察者模式,那便有被观察者,观察者,用于管理观察者的管理类。
以监听Activity的生命周期为例,被观察者是Activity,Request请求为观察者,下面分析源码
1.在当前Activity的FragmentManager中加入RequestManagerFragment,Fragement的生命周期跟Activity的生命周期相关联
@Override
public void onStart() {
super.onStart();
lifecycle.onStart();
}
@Override
public void onStop() {
super.onStop();
lifecycle.onStop();
}
@Override
public void onDestroy() {
super.onDestroy();
lifecycle.onDestroy();
unregisterFragmentWithRoot();
}
可以 看到lifecycle就是管理观察者的管理类,当Activity的生命周期变化时,会调用相应的方法,现在只要向lifecycle中添加LifecycleListener的实现类就可以监听Activity的生命周期。
2.生成requestManager,里面包含GlideLifecycle,requestManager实现LifecycleListener,把requestManager注册到GlideLifecycle中
3.requestManager中requestTracker对象用来管理Request
调用顺序是 Acitity->RequestManagerFragment->GlideLifecycle->requestManager->requestTracker->Request