Android LiveData

发布时间: 2022-10-29 14:38:57 作者: 大象笔记

可以包含任何类型的数据,通过监听 LiveData,在数据发生变化时,可以立即得到通知。

LiveData 与 ViewModel

通常 LiveData 定义在 ViewModel 中,然后在 Activity / Fragment 中监听 LiveData 的变化。

不在 Activity 中定义 LiveData,原因有两点:

为何是监听这种方式

当 ViewModel 中的数据发生变化,要同步到 Activity / Fragment 上有两种方式:

LiveData 与 MutableLiveData 的区别

一开始看到 MutableLiveData 这个类型的时候,我非常疑惑。 既然 LiveData 是用来监听数据变化的,那么这个类型一定是可以更改的啊,不能变化还有监听的必要么?

实际上,LiveData 与 MutableLiveData 的区别并不是是否可以更改,而是在哪里可以更改:

所以,为了偷懒起见,不去考虑使用场景,我直接用 MutableLiveData 就对了。

但是,有一种所谓推荐的做法,也完美诠释了两种的区别:

setValue 与 postValue 的区别

监听变化并刷新界面 UI

界面操作更新 LiveData

button.setOnClickListener {
    viewModel.currentMode.setValue("Some new value!")
}
我是一名山东烟台的开发者,联系作者