专栏名称: Android_开发者
目录
相关文章推荐
51好读  ›  专栏  ›  Android_开发者

[译]Android 数据绑定库 — 从可观察域到 LiveData 仅需两步

Android_开发者  · 掘金  · android  · 2019-08-26 02:15

正文

阅读 67

[译]Android 数据绑定库 — 从可观察域到 LiveData 仅需两步

数据绑定最重要的特性之一是 可观察性 。你可以用它绑定数据和 UI 元素,以便在数据更改时,相关元素在屏幕上更新。

默认情况下 ,普通基元和字符串是 可被观察的,因此如果在数据绑定布局中使用它们,则在创建绑定时将使用它们的值,但对它们的后续更改会被忽略。

为了使对象可被观察,我们的 数据绑定库 中包含了一系列可被观察的类: ObservableBoolean ObservableInt ObservableDouble 和范型: ObservableField<T> 。从现在开始,我们称这些为 可观察域

几年后,作为第一波 架构组件 的一部分,我们发布了 LiveData ,这 是一个可被观察的。这是与数据绑定兼容的候选,因此我们添加了此功能。

LiveData 是可以感知生命周期的,对于可观察域而言,这并不是一个很大的优势,因为数据绑定库已经检查了视图何时处于活动状态。但是, LiveData 支持 Transformations 和很多架构组件,比如 Room WorkManager

出于这些原因,建议你迁移到 LiveData 。你只需要两步即可完成。

第一步:使用 LiveData 代替可观察域

如果你直接在数据绑定布局中使用可观察域,只需使用 LiveData<Something> 替换 ObservableSomething (或 ObservableField<Something> )。

修改前:

<data>
    <import type="android.databinding.ObservableField"/>
    <variable 
        name="name" 
        type="ObservableField&lt;String>" />
</data><TextView
    android:text="@{name}"
    android:layout_width="wrap_content"
    android:layout_height="wrap_content"/>

复制代码

Remember that %lt; is not a typo. You have to escape the < character inside XML layouts.







请到「今天看啥」查看全文