目录
1.Livedata是如何实现监听activity组建生命周期回调的
implementation 'androidx.appcompat:appcompat:1.3.1'
思考问题
1.Livedata是如何实现监听activity组建生命周期回调的
【答】
通过LifeCycleRegistry组件进行添加了LifecycleBoundObserver进行监听Acrivity组件的生命周期回调
2.Livedata是如何实现防止内存泄露的
【答】
通过LifecycleBoundObserver的父类ObserverWrapper中的mActive字段控制是否进行观察者回调,防止内存泄漏的
一、版本
implementation 'androidx.appcompat:appcompat:1.3.1'
二、类图
三、流程
refer:
掘金
四、总结
优点 | 1.使用了观察者模式,LifeCycleRegistry-被观察者,LiveData里面的mObservers缓存了业务的observer回调对象,其中observer回调对象被封装成了LifeCycleBoundObserver(观察者对象) 主要目的是监听生命周期回调 |
2.从业务上看LiveData(被观察者) 业务的Observser(观察者) 当业务调用LiveData.setVaule(), postValue()时,通过LiveData回调到业务的Observer中 主要目的是业务的处理回调 | |
缺点 |
五、学习到了什么
设计模式 | 观察者模式 LiveData-业务Observer |
LifeCycleRegistry - LifeCycleBoundObserver | |
外观模式: LiveData 封装了内部的生命周期监听 和 业务回调 | |
设计 | |
六、参考
https://juejin.im/post/5ca9f9156fb9a05e3d0a8aea#heading-5