概念
在JetPack学习笔记之ViewModel中,当数据发生变化时,我们是可以采用接口的方式实现对页面的通知的,比如将计数显示到Activity中。通过接口的方式对页面进行通知是可行的,但如果要观察的数据很多,则需要定义大量的接口,代码显得十分冗余。为此,Jetpack提供了LiveData组件。
LiveData是一个可被观察的数据容器类。具体来说,可以将LiveData理解为一个数据的容器,它将数据包装起来,是数据成为被观察者,当该数据发生变化时,观察者能够获得通知。我们不需要自己去实现观察者模式,LiveData内部已经默认实现好了,我们只要使用就可以了。
LiveData与ViewModel之间的关系
ViewModel用于存放页面所需的各种数据,还可以在其中放一些与数据相关的逻辑。例如,我们可以在ViewModel中进行数据的加工、获取等操作。
对页面来说,它只关心需要展示的数据是什么,并且希望在数据发生变化时得到通知并能及时的做出更新。
LiveData的作用就是,在ViewModel中的数据发生变化时通知页面。因此,LiveData通常被放在ViewModel中使用,用于包装ViewModel中那些需要被外界观察的数据。
使用
LiveData是一个抽象类,不能直接使用。通常我们使用的是它的直接子类MutableLiveData。
public class MyViewModel extends ViewModel {