首页
学习
活动
专区
工具
TVP
发布
精选内容/技术社群/优惠产品,尽在小程序
立即前往

【Jetpack】LiveData 架构组件 ( LiveData 简介 | LiveData 使用方法 | ViewModel + LiveData 示例 )

一、LiveData 简介 ---- 在 视图 View 与 数据模型 Model 通过 ViewModel 架构组件 进行绑定后 , 可以立即 将 ViewModel 中的数据设置到 UI 界面中...视图 View ; 二、LiveData 使用方法 ---- 首先 , 在 ViewModel 视图模型 中定义 LiveData 数据 , 如 MutableLiveData , class MyViewModel...; 使用 传统的开发方式 , 可以使用 线程通信 , Handler 或者 广播 等形式 , 在子线程中通知主线程更新 UI ; 使用 LiveData 后 , 将数据定义在 LiveData 中 ,...+ LiveData 代码 自定义 ViewModel 子类继承 ViewModel , 在 ViewModel 中 , 定义 LiveData 类型的数据 , 此处选择使用 MutableLiveData...数据进行累加 , LiveData 设置了 Observer 监听 , 数据改变时回调 Observer#onChanged 函数更新 UI 显示 ; 执行时切换屏幕方向 , 不影响数据累加显示 ;

1.2K20

Android LiveData 使用详解

这篇博客让我们一起来了解一下 LiveData 是怎样使用的?...---- 为什么要引进 LiveData LiveData 是一个可以被观察的数据持有类,它可以感知 Activity、Fragment或Service 等组件的生命周期。...而当你如果使用 Livedata 的话,因为它是在 Activity 处于 onStart 或者 onResume 的状态时,他才会进行相应的回调,因而可以很好得处理这个问题,不必谢一大堆的 activity.isDestroyed...接下来,让我们一起来看一下 LiveData使用 ---- LiveData 使用 基本使用 引入相关的依赖包 // ViewModel and LiveData implementation "...LiveData 内部已经实现了观察者模式,如果你的数据要同时通知几个界面,可以采取这种方式 我们知道 LiveData 数据变化的时候,会回调 Observer 的 onChange 方法,但是回调的前提是

4.8K40
您找到你想要的搜索结果了吗?
是的
没有找到

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

默认情况下,普通基元和字符串是不可被观察的,因此如果在数据绑定布局中使用它们,则在创建绑定时将使用它们的值,但对它们的后续更改会被忽略。...几年后,作为第一波架构组件的一部分,我们发布了 LiveData,这又是一个可被观察的。这是与数据绑定兼容的候选,因此我们添加了此功能。...LiveData 是可以感知生命周期的,对于可观察域而言,这并不是一个很大的优势,因为数据绑定库已经检查了视图何时处于活动状态。...第一步:使用 LiveData 代替可观察域 如果你直接在数据绑定布局中使用可观察域,只需使用 LiveData 替换 ObservableSomething(或 ObservableField...setLifecycleOwner 的方法,在从数据绑定布局中观察 LiveData 时必须调用该方法。

12010

SpringBoot使用@ConstructorBinding注解进行配置属性绑定

SpringBoot2.2版本发行后一些新的功能也渐渐的浮出了水面,在之前版本SpringBoot的配置文件与类之间的属性绑定(@ConfigurationProperties)是通过Setter方法来进行绑定对应的配置值...,而从2.2版本开始支持了构造函数的方式进行绑定。...return author; } public String getBlogAddress() { return blogAddress; } } 在之前的版本我们都是使用...,只要通过@ConfigurationPropertiesScan结合@ConfigurationProperties搭配使用即可,会自动扫描指定package下的属性配置类进行绑定。...在属性配置类上添加@ConstructorBinding注解,即可实现构造函数的方式进行对应字段设置值,我们只需要把绑定赋值的参数通过构造函数的方式定义。

2.5K41

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

数据绑定最重要的特性之一是可观察性。你可以用它绑定数据和 UI 元素,以便在数据更改时,相关元素在屏幕上更新。...默认情况下,普通基元和字符串是不可被观察的,因此如果在数据绑定布局中使用它们,则在创建绑定时将使用它们的值,但对它们的后续更改会被忽略。...LiveData 是可以感知生命周期的,对于可观察域而言,这并不是一个很大的优势,因为数据绑定库已经检查了视图何时处于活动状态。...第一步:使用 LiveData 代替可观察域 如果你直接在数据绑定布局中使用可观察域,只需使用 LiveData 替换 ObservableSomething(或 ObservableField...setLifecycleOwner 的方法,在从数据绑定布局中观察 LiveData 时必须调用该方法。

1.1K30

Android-ViewModel和LiveData使用详解

我们可以在onSaveInstanceState()方法中保存数据,并从onCreate()方法中通过Bundle恢复数据,但这种方法只适用于可以对其进行序列化的少量数据,而不适用于潜在的大量数据。...使用ViewModel的话ViewModel会自动保留之前的数据并给新的Activity或Fragment使用。...比如:在你的手机进行翻转时,activity会重新走生命周期。 * 那么如果在Activity中保存的数据,就很有可能,被复写,重置或者丢失。.../ViewModel ) * AndroidViewModel(ViewModel的子类):需要使用到Context对象时继承它 否则继承 ViewModel * * LiveData是一个可观察的数据持有者类...private MutableLiveData<DomeInfo mDomeLiveData; /** * 改变 LiveData 中的数据 * 使用 setValue() * @param

3.4K30

Android  JetPack~ LiveData (一)   介绍与使用

一般情况下LiveData都是搭配这ViewModel使用,这里先介绍一下LiveData,再结合ViewModel使用 Android数据绑定技术一,企业级开发 Android数据绑定技术二,企业级开发...Android  JetPack~ DataBinding(数据绑定)(一)    集成与使用 Android  JetPack~ LiveData (一)   介绍与使用 Android  JetPack...的使用 5、MutableLiveData的使用 6、LiveData和MutableLiveData的可变与不可变 7、其他方法 1、什么是LiveData LiveData是一个观察者模式的数据实体类...LiveData它能感知绑定者的生命周期(如Activity,Fragment),不会发生内存泄露,因为它只会给活跃状态的activity回调,我们在使用的时候通常都会在回调里去更新UI。...总结: LiveData一般使用在实体类,MutableLiveData作用在变量上,他们通常和ViewModel结合使用,上面例子过于简单,工作当中可按照业务需要进行调整。

1.4K20

Android JetPack~LiveData(二) 数据倒灌问题

1、数据倒灌的出现 场景: 如果我们在一个home页面获取网络数据,然后通过LiveData的观察者特性,在回调中跳转B页面,当旋转屏幕时,页面重建,LiveData又发来最后一次数据,那么直接触发了跳转...这就是数据倒灌引起的问题。因为LiveData数据会保存在内存中。 数据倒灌原因: 个人描述:我们都知道LiveData是一个观察者模式,被观察者只要改变了观察者会收到通知。...在页面重建时,LiveData自动推送最后一次数据供我们使用。 官方描述:ViewModel 将数据保留在内存中,这意味着开销要低于从磁盘或网络检索数据。...倒灌原因小结 Activity异常销毁然后重建,ViewModel会保存销毁之前的数据,然后在Activity重建完成后进行数据恢复,所以LiveData成员变量中的mVersion会恢复到重建之前的值...如果当前Activity回到前台LiveData不需要接收最新的数据,可以使用下面三中扩展的LiveData 官方扩展的SingleLiveEvent 美团反射修改mVersion UnPeek-LiveData

1.7K20

两步使用 LiveData 替换 Observable Field

可观察性是数据绑定库 (Data Binding) 的重要特性之一,它可以将数据和 UI 元素绑定在一起——当数据发生变化时,屏幕上的相关元素也会随之更新。...默认情况下,普通函数和字符串是不可观察的,这就意味着,当您在数据绑定布局中需要使用它们时,只能在新建的时候获取它们的值,但在后续的操作中,却不能得到相应的数据。...再后来,在我们发布 Android 架构组件时首批就包含了 LiveData,这是另一个 “可观察” 类,并且与数据绑定库兼容。...第一步: 用 LiveData 替换 Observable Fields 如果您是直接在数据绑定使用 Observable Fields,只需将 Live ObservableSomething (或...setLifecycleOwner 方法,想要从数据绑定布局观察 LiveData ,必须使用该方法。

89920

LiveData 的正确使用姿势以及反模式

这种特性对于那种需要持续监听数据变化,然后实时做出 UI 响应的场景十分有用且便利。...因此,并不是所有场景下都适合使用 LiveData,当我们所要监听的数据是符合「状态」特性,而是不是「事件」特性的时候,才是最适合使用 LiveData 的场景。...下面分别介绍几种常见错误使用方式: case 1:数据是「事件」类型的 以「收款到账提醒举例」 class MvvmViewModel : ViewModel() { private val...LiveData 的,虽然使用各种 workaround 的方式(此处可参考我的另一篇文章:LiveData 非粘性消息的探索和尝试 )可能可以满足需求,但是 LiveData 有自己特定的使用场景,...case 2:有多个监听者并在其中一个 observer 中修改 LiveData 不要在 observer 中修改 LiveData 的值的数据,会影响其他 observer。

81420

谈谈数据绑定

就是说,数据绑定是用来给视图层和业务逻辑层建立连接的,把业务逻辑的数据变化体现到视图的展示上面去,反之亦然。其实质,不妨这样理解,就是将数据对象序列化并传递给视图的过程。...XML 数据绑定是最原始的种类的,比如 WPF 里面的数据绑定: <DockPanel xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation...在 Grails 里面,提供了基于规约+特殊匹配的<em>绑定</em>形式(说到规约,我在 《MVC 框架的映射和解耦》这篇文章里面提到了基于规约的<em>数据</em><em>绑定</em>,不需要配置文件,只需要遵守约定): // binds request...上面是我总结的常见<em>数据</em><em>绑定</em>种类,以及我的理解,如果你有其它的<em>数据</em><em>绑定</em>方式,不妨告诉我。...:) PS:JSR-227 作为 Java 尝试定义的标准<em>数据</em><em>绑定</em>和<em>数据</em>访问设施,最终还是流产了,感兴趣的话可以参阅。

83220
领券