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