一、 LiveData简介
LiveData是Jetpack架构组件Lifecycle 库的一部分,是一个可感知生命周期的可观察容器类 (Observable)。与常规的可观察类不同,LiveData 具有生命周期感知能力,这意味着它具有感知应用组件(如 Activity、Fragment 或 Service)的生命周期的能力,并且LiveData仅更新处于活跃生命周期状态的应用组件观察者。
因此,LiveData具有如下一些特效。
- LiveData是一个持有数据的容器类,它持有的数据是可以被观察者订阅的,当数据发生变化时会通知观察者,观察者可以是 Activity、Fragment、Service 等对象。
- LiveData 具有感知观察者的生命周期能力,并且只有当观察者处于激活状态(STARTED、RESUMED)才会接收到数据更新的通知,在未激活时会自动解除注册观察者,以降低内存泄漏的风险。
- 使用 LiveData 保存数据时,由于数据和组件是分离的,所以当组件被销毁时可以保证数据不会丢失。
因此,我们认为LiveData就是一个数据容器,它负责将数据包裹起来,使数据成为被观察者,当数据发生变化时,LiveData会通知观察者以便观察者做出响应。
那相比其他的一些观察者技术,如RxJava什么的,LiveData有哪些优势吗,下面是官方给出的一些优点列举。
- 确保 UI 界面始终和数据状态保持一致。
- 不会发生内存泄漏。观察者绑定到 Lifecycle 对象并在其相关生命周期 destroyed 后自行解除绑定。
- 不会因为 Activity 停止而发生奔溃。如 Activit