LiveData 是一个可观察的数据持有者类。
与常规observable不同,LiveData是生命周期感知的,这意味着它尊重其他应用程序组件的生命周期,例如活动,片段或服务。
此感知确保LiveData仅更新处于活动生命周期状态的应用程序组件观察者
注意:
要将LiveData组件导入Android项目
LiveData将一个由Observer类表示的观察者视为生命周期处于STARTED或处于状态时处于活RESUMED状态。LiveData仅通知活动观察者有关更新的信息。注册观察LiveData对象的非活动观察者不会收到有关更改的通知
您可以注册与实现该LifecycleOwner接口的对象配对的观察者。此关系允许在相应Lifecycle对象的状态更改为时删除观察者DESTROYED。这对于活动和片段特别有用,因为它们可以安全地观察LiveData对象而不用担心泄漏 - 活动和片段在其生命周期被破坏时立即取消订阅。
一 使用LiveData的优点
一 使用LiveData的优点
使用LiveData具有以下优势:
1.确保您的UI符合您的数据状态
LiveData遵循观察者模式。Observer生命周期状态更改时,LiveData会通知对象。您可以合代码以更新这些Observer对象中的UI。每次应用程序数据更改时,您的观察者都可以在每次更改时更新UI,而不是更新UI。
2.没有内存泄漏
观察者绑定Lifecycle对象并在其相关生命周期被破坏后自行清理。
3.由于停止活动而没有崩溃
如果观察者的生命周期处于非活动状态(例如,在后端堆栈中的活动的情况下),则它不会接收任何LiveData事件。
4.不再需要手动生命周期处理
UI组件只是观察相关数据,不会停止或恢复观察。
LiveData自动管理所有这些,因为它在观察时意识到相关的生命周期状态变化。
5.始终保持最新数据
如果生命周期变为非活动状态,则会在再次变为活动状态时接收最新数据。
例如,后台活动在返回前台后立即收到最新数据。
6.适当的配置更改
如果由于配置更改(例如设备轮换)而重新创建活动或片段,则会立即接收最新的可用数据。
7.共享资源
您可以LiveData使用单例模式扩展对象以包装系统服务,以便可以在应用程序中共享它们。
该LiveData对象连接到系统服务一次,然后任何需要该资源的观察者只能观察该LiveData对象。
二 使用LiveData对象
请按照以下步骤处理LiveData对象:
创建一个LiveData用于保存特定类型数据的实例。这通常在您的ViewModel班级内完成。
创建一个Observer定义onChanged()方法的对象,该对象控制LiveData对象保持数据更改时发生的情况。您通常Observer在UI控制器中创建一个对象,例如活动或片段。
使用该方法将Observer对象附加到对象。该方法采用一个对象。这会将对象订阅到对象,以便通知其更改。您通常将对象附加到UI控制器中,例如活动或片段。
LiveDataobserve()observe()LifecycleOwnerObserverLiveDataObserver
**注意:**您可以LifecycleOwner使用该observeForever(Observer)方法注册没有关联对象的观察者。在这种情况下,观察者被认为始终处于活动状态,因此始终会收到有关修改的通知。您可以删除调用该removeObserver(Observer)方法的这些观察者。
更新存储在LiveData对象中的值时,只要附加LifecycleOwner的处于活动状态,它就会触发所有已注册的观察者。
LiveData允许UI控制器观察者订阅更新。当LiveData对象保存的数据发生更改时,UI会自动更新响应。
2.1创建LiveData对象
LiveData是一个包装器,可以与任何数据一起使用,包括实现的对象Collections,例如List。甲LiveData对象通常存储一个内ViewModel对象,并且经由吸气剂的方法被访问,如下面的示例所示&#x