Android架构——LifeCycle和LiveData原理学习总结

本文是楼主学习LifeCycle和LiveData原理的一些总结,本文不会长篇分析源码,而是利用类图和总结性的文字归纳原理。由于Livedata和LifeCycle有紧密联系,所以本文先总结LifeCycle原理,再总结LifeData原理。

本文LifeCycle基于版本androidx.lifecycle:lifecycle-runtime:2.1.0, LiveData基于版本androidx.lifecycle:lifecycle-livedata-core:2.0.0

本文内容结构

一、简单介绍下LiveData有什么作用。

二、类图总结LifeCycle原理。

三、类图总结LiveData原理。
 

一、LiveData作用

(1)实际上就是一个观察者模式的数据容器,当数据改变时,通知UI刷新;

(2)数据LiveData<T>是被观察者,组件activity, fragment是观察者;

(3)LiveData能感知activity, fragment组件的生命周期,当activity,fragment销毁时,会自动清除引用,不必担心内存泄漏。而其他观察者回调的库需要自己管理生命周期。

(4)当activity或者fragment处于活动状态时如started,resumed,liveData才会通知。

(5)LiveData通常和ViewModel一起使用, LiveData<T>作为ViewModel的一个成员变量。
 

二、LifeCycle原理

Android架构——LifeCycle和LiveData原理学习总结

LifeCycle的核心原理总结

1)继承自LifeCycle的LifecycleRegistry,它与LifeCycleOwner(Activity,Fragment)相互持有。

2)在LifeCycleOwner里通过getLifeCycle()拿到LifeCycleRegistry可以添加删除LifeCycleObserver。

3)当LifeCycleOwner(Activity,Fragment)发生生命周期改变的时候,LifeCycleOwner调用dispatch分发事件给LifecycleRegistry。

4)LifeCycleRegistry调用handleLifeCycleEvent()处理:遍历已添加的LifeCycleObserver,调用LifeCycleObserver.onStateChanged()。

三、LiveData原理

Android架构——LifeCycle和LiveData原理学习总结

 

 LifeData的核心原理总结

1)LiveData本身是一个数据持有类。

2)LiveData有一个内部类:LifeCycleBoundObserver(实现了LifeCycleObserver)。

3)LifeCycleBoundObserver持有LifeCycleOwner(Activity、Fragment组件)和一个普通的接口类Observer(需要实现onChanged)。这个普通的接口Observer是业务实现,业务负责监听处理回调。当LifeCycleOwner(Activity、Fragment组件)生命周期发生改变时,LifeCycleObserver的onStateChanged调用(详情看LifeCycle原理)。

4)LifeCycleObserver的onStateChanged调用时如果处于激活状态时,调用LiveData.dispatchingValue更新数据->Observer.onChanged()。

5)LiveData.setValue声明在主线程调用,最后也是调用LiveData.dispatchingValue。

LiveData的应用:

MVVM: ViewModel+LiveData+DataBinding+Retrofit+Room+Paging+RxJava 总结与实践(Java实现)_xiaobaaidaba123的专栏-CSDN博客

上一篇:Java日志初探JUL


下一篇:98_Go基础_1_66 ioutil 遍历目录