LiveData - SMAXLYB/JetpackPractice GitHub Wiki

LiveData

  • 一般而言,数据发生变化,需要接口进行监听,但随着数据的增加,接口的数量也会增加,代码冗余,使用LiveData可以解决这个问题,它是一个可以被观察的数据容器,当数据发生变化,观察者能够获得通知。
  • 使用方法:
    1. 实例化MutableLiveData包装数据
    2. 使用LiveData.observe()进行对页面的声明监听,一旦页面被销毁或者未激活,LiveData会清除监听者,避免内存泄露,第一个参数是LifecycleOwner,activity/fragment都是它的实现类,第二个参数是数据发生变化后执行的事件,此外还有observeForever(),此方法无论页面什么状态,都是激活状态,如果页面被销毁,需要手动removeObserver(),否则会造成内存泄露
    3. 使用LiveData.postValue()/setValue()/getValue()进行数据操作,数据会自动通知UI发生变化