如果观察者的生命周期处于非活动状态(例如,在后端堆栈中的活动的情况下),则它不会接收任何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对象,并且经由吸气剂的方法被访问,如下面的示例所示:
public class NameViewModel extends ViewModel