分析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 中做图片的业务处理。



  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值