LiveData 概述

官网链接  liveData  

导入LiveData  Adding Components to your Project.

liveData 是一个可观察的数据持有类。 并不想其它普通的 可观察类。liveData 是具有生命周期意识,这就意味着 它完全遵守组件的生命周期,例如 activities、fragments,services。所以这种方式 确定LiveData 只会在有效的生命周期状态中去更新应用组件的观察者。

使用LiveData的优势如下:

1.确保UI 与数据状态相匹配。

    LiveData 遵循着Observer 模式。 当生命周期的状态改变时,LiveData会通知 Observer 对象。这时 你可以用你已经写好在Observer 对象里的代码进行更新UI。 这种方式取代了每当数据变更时而在去更新UI

2.没有内存溢出

3.不会出现因activities的停而止导致崩溃

4.不需要手工处理LifeCycle

    LiveData 会自动管理相关的生命周期状态

5.总是保持最新的数据

    如果一个lifecycle 状态处于非活跃时,它会在再次成为活跃状态之际去获取最新的数据。(一个在后台的activity再次返回前台后将获取最新的数据)

6. 适应 配置 变化

    如果一个activity or fragment因为配置更改 被重新创建,它会立刻加载最新的有效数据。例如     手机旋转进行横屏切换等

7.共享资源

    你可以使用单例模式扩展LiveData对象来包装系统服务,这样它们就可以在你的应用中共享。        LiveData对象连接到系统服务一次,然后任何需要资源的观察者都可以只看LiveData对象。详       情    Extend LiveData

Work with LiveData objects

1. 创建一个持有明确类型数据LiveData 实例。通常创建在VIewModel类中。

2. 创建 一个 Observer 对象并实现  onChanged() 方法,这个方法根据数据的变动控制UI的更新。

    通常被创建在 UI controller 中,如 activity、fragment。

3 调用 LiveData 的  observe()   将创建好的 Observer 对象附加到LiveData 对象上。 observe()方法     接受一个LifecycleOwner对象。这将观察者对象订阅LiveData对象,以便通知更改。

  直接去代码

原理及分析

创建LiveData

LiveData 概述_第1张图片
Create LiveData objects

开发时你可以给LiveData 添加 任何数据,objects that implement Collections, such as List。一个LiveData 通常被管理在一个实现  ViewModel  的对象中,并通过其中一个方法访问。

观察LiveData

LiveData 概述_第2张图片
Observe LiveData objects

当observe() 被调用  (Observer 对象作为参数 nameObserver),onChanged() 就会被立即唤起提供存储在LiveData(mCurrentName)里的最新的值。如果没有值 onChanged() 就不会被调用。

更新LiveData 对象

LiveData 概述_第3张图片
Update LiveData objects

LiveData 没有公共的方法去跟新数据。 MutableLiveData  类会暴露给开发者  setValue(T) and postValue(T)   方法去存储数据。setValue() 的使用会使 observers  调用 onCHanged() ,它的参数就是要我们要给UI刷新的数据。

Note: You must call the setValue(T) method to update the LiveData object from the main thread. If the code is executed in a worker thread, you can use the postValue(T) method instead to update the LiveData object.

你可能感兴趣的:(LiveData 概述)