Android~LiveData原理,kotlin从零到精通android开发

  • 当Activity停止时不会引发奔溃,不需要解决生命周期带来的问题;

  • 组件和数据相关的内容能够实时更新到UI;

  • 对于横竖屏切换时不需要做额外的处理来保存数据,解决了Configuration Change问题。

LiveData源码分析

在分析源码前,我们需要大概知道,LiveData内部保存了LifecycleOwner和Observer,利用LifecycleOwner感知并处理声明中期的变化,Observer在数据改变时遍历所有观察者并回调方法。因为LiveData并不复杂离开了LifecycleOwner、Observer,LiveData可能啥都不是。接下来我按照正常的调用顺序来分析源码。

new MutableLiveData<>()

首先LiveData是抽象类不能直接初始化,我们需要使用MutableLiveData创建。我们直接去看它的父类的构造函数,两种实现,带参数的是用外部传进来的引用并且mVersion+1;不带参的,NOT_SET由LiveData自己内部创建,mVersion为-1。

static final Object NOT_SET = new Object();

public LiveData(T value) {

mData = value;

mVersion = START_VERSION + 1;

}

public LiveData() {

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值