首页
学习
活动
专区
工具
TVP
发布
精选内容/技术社群/优惠产品,尽在小程序
立即前往
您找到你想要的搜索结果了吗?
是的
没有找到

Android Jetpack | DataBinding

DataBinding 是属于 Jetpack 一个支持库,可以让你以布局声明属性方式替代编码方式将布局 UI 组件应用数据进行绑定 通常我们让控件和数据交互方式如下面的代码,调用 findViewById...DataBinding),而且也减少了内存泄露空指针风险 如何使用 DataBinding 库 ?... 标签就是我们放布局变量地方,布局变量用于编写布局表达式,布局表达式被放置元素属性值,格式是@{布局表达式} 3、实现你第一个布局表达式 标签添加一个 String...类型布局变量 TextView 控件属性中使用此变量,注意 id variable...= viewModel } } 运行 app 看看效果 DataBinding 还可以 LiveData 完美结合,我们可以看到 MainViewModel name 变量是 LiveData

1K10

Android 架构组件最新进展 (上篇)

Jetpack 项目正是为了解决这些问题而诞生,Jetpack 是一系列助力您更容易打造优秀 Android 应用工具组件,这些组件能帮助您遵循最佳实践、免除编写繁复样板代码并简化复杂任务,从而使您可以专注于最核心代码逻辑...其中 androidx.* 库与 Framework API 解耦,这能够提供向后兼容同时,也能更频繁地更新。 Android Jetpack 架构组件可帮助您设计稳健、可测试且易维护应用。...数据绑定库 数据绑定 (Data Binding) 库是一种支持库,借助该库,您可以使用声明性格式 (而非程序化地) 将布局界面组件绑定到应用数据源。...) { newValue -> } 另一个例子则是 LiveData 不再需要使用静态 Transformations.map 方法: // lifecycle-livedata-ktx // 以前...ViewModel 来管理 使用 URI 直接导航 对话框可以做为导航目标 更好地对动态功能做出支持 请大家保持对本次连载关注,我们会在下篇为大家介绍分页库、Room 持久性库 WorkManager

89440

Jetpack之LiveData详解

简介 LiveData 是Jetpack一个组件,是一个可被观察数据存储器类, 具有感知组件生命周期能力,LiveData 可以感知组件生命周期活跃状态发送数据更新,组件销毁时移除观察者对象,...:$lifecycle_version" } 如果使用 Androidx 的话需要引入 Androidx对应 LiveData appcompat 包: dependencies { def...除了使用库里提供 MutableLiveData MediatorLiveData 外我们还可以根据实际场景继承 LiveData自定义我们自己 LiveData,比如我们需要展示最新一条消息...LiveData 结合 ViewModel 使用 前面介绍 LiveData 使用时都是直接在Activity里使用,但是真实开发场景我们一般不直接在 Activity / Fragment 中使用而是...ViewModel使用,然后 Activity / Fragment 中观察 ViewModelLiveData 数据变化: java: public class MainViewModel

1.6K20

Android Jetpack - LiveData

LiveData 对象连接到系统服务一次,然后任何需要该资源观察者都可以只观看 LiveData 对象 使用 LiveData 使用 LiveData 常规步骤如下,我们按照下面这些步骤写一个简单例子...,这一步通常在 UI 控制器完成 3、使用 observer() 方法关联 Observer LiveData ,observer() 方法持有 LifecycleOwner 对象,此订阅会让 LiveData...LiveData 对象通常存储ViewModel 对象,并通过 getter 方法访问,如以下示例所示: class NameViewModel : ViewModel() { private...与 Room 一起使用 LiveData Room 持久化库支持可观察查询并返回 LiveData 对象,这些查询一般 DAO 编写 更新数据库时,Room 会生成更新 LiveData 对象所需所有代码...具体可以参考 Android Jetpack - Room 一文所提供代码示例 转换 LiveData 您可能希望LiveData 对象分派给观察者之前更改存储 LiveData 对象值,

1.9K30

AndroidJetpack Livedata应用场景分析

/Fragment onCreate 中注册 Livedata 监听(因为 onStart onResume 中进行监听可能会有冗余调用) Livedata 简单使用 仍然还是用我们倒计时例子..., Viewmodel 开始一个 2000s 倒计时,然后通过 Livedata 回调给 Activity 进行更新界面,代码: viewmodel 代码 class CountDownModel...Livedata 多个视图监听状态 本例实现 demo 效果是,创建一个全局倒计时,然后 Activity 添加两个按钮,点击后可以切换 FragmentA FragmentB。...进行转换map switchMap 两个方法可以对已有的 Livedata 进行转换得到新 Livedata Transformation.map activity 中观察 viewmodel...emit 方式使用 引入依赖 有时候你可能需要处理异步任务,任务处理完成后刷新 ui 这种情况可以使用 Livedata 扩展程序实现 本例我们实现下面的逻辑: viewmodel 阻塞 4s,

1K20

AAC---LiveData

而这种相关性(awareness )会导致LiveData数据只有Active状态下才会被回调。 我们可以通过实现了LifeCycleOwner接口对象来提供生命周期感知。...使用LiveData好处 保证UI与数据状态同步 LiveData使用Observer模式,只有当Lifecycle状态改变时候,才会回调给Observer。...LiveData对象一旦连接系统Service,当有Observer需要资源的话,就可以监听LiveData对象了 使用方法 build.gradle添加配置 dependencies {...数据有变化时候,则可以调用setValue或者非主线程调用postValue改变,而修改后值会通过onChanged方法回调。...组件相辅相成 Room: RoomQuery返回对象可以是一个LiveData,而当数据库数据有改变时,该LiveData也会收到最新数据 ViewModelViewModel作用也就是请求数据

1.1K20

Android 架构组件 - 让天下没有难做 App

Android Studio 提供迁移工具(Refactor > Migrate to AndroidX)可以将源码旧包名替换成新,但是如果 Maven 依赖产物还未迁移到 AndroidX...下面将要讲到 LiveData ViewModel 都是 Lifecycle-Aware Components,它们都用到了 Lifecycle。...除此之外,ViewModel 也可以用做 MVVM 模式 VM 层,利用 Data Binding 直接把 ViewModel LiveData 属性绑定到 xml 元素上,xml 声明式写法避免了很多样板代码...LiveData “操作符” Transformations.switchMap,用法可以认为等同于 Rx flatMap;如果只想对 LiveData value 做一些映射,可以使用 Transformations.map...进离场动画启动选项很好理解,出栈行为是一个比较强大功能,action 箭头所指方向表示目标页面入栈,箭头反方向则表示目标页面出栈,而出栈行为 Navigation 编辑器完全可控,我们可以指定要出栈到哪个页面

1.2K20

LiveData beyond the ViewModel

这个系列我做了协程Flow开发者一系列文章翻译,旨在了解当前协程、Flow、LiveData这样设计原因,从设计者角度,发现他们问题,以及如何解决这些问题,pls enjoy it。...通过LiveData,这种通信更加安全:由于它生命周期意识,数据只有View处于Activity状态时才会被接收。 简而言之,其优点是你不需要在ViewViewModel之间手动取消订阅。...img LiveData beyond the ViewModel 可观察范式视图控制器ViewModel之间工作得非常好,所以你可以用它来观察你应用程序其他组件,并利用生命周期意识优势。...img 使用MediatorLiveData来组合数据方法是不同方法添加来源设置值。...这并没有什么问题ViewModel,我们需要公开一个randomNumber属性,从生成器获取数字。

1.5K30

【Jetpack】Room + ViewModel + LiveData 综合使用 ( 核心要点说明 | 组合方式 | 代码示例 )

, 每当数据库数据发生变化时 , 就需要开启线程 , 重新获取数据库数据 ; 为了优化上述问题 , 可以引入 LiveData ViewModel , ViewModel 是 视图 View...与 数据模型 Model 之间 数据交互 桥梁 ; LiveData 是基于 ViewModel , 是 对 ViewModel 数据维护一个补充 ; ViewModel使用LiveData... 更新视图 操作 ; 2、Google 官方建议 Room + ViewModel + LiveData 架构 下图是 Google 官方 提出 Room + ViewModel + LiveData...视图模型层 : 该层 不与 Room Retrofit 直接交互 , 而是与 Repository 层 进行交互 ; ViewModel 层引入 LiveData 监听数据变化 , 如果数据发生变化则在...ViewModel 使用要点 Activity 组件 , 通过调用 ViewModel 视图模型获取 数据库数据 , ViewModel 调用 Repository 层增删改查方法 , Repository

55520

【Jetpack】ViewModel + LiveData + DataBinding 综合使用 ( 核心要点说明 | 组合方式 | 代码示例 )

DataBinding 结合使用时 , DataBinding 布局设置就是该 视图模型 类对象 ; 该 ViewModel , 还 使用LiveData , 可以实时监听数据改变...ViewModel 数据发生了变化 , 如何将变化应用到视图组件 , 视图中显示最新数据内容 , 此时就用到了 LiveData 组件 ; ViewModel 基础上 , 通过 引入 LiveData..., 可以将 运行过程 ViewModel Model 模型数据改变 通知 视图 View , 令视图组件显示最新数据内容 ; ViewModel使用LiveData 后 , 必须调用...androidx.lifecycle.Observer#onChanged 函数 , 该回调函数执行 更新视图 操作 ; LiveData 使用核心要点 : 首先 , 自定义 ViewModel...+ ViewModel + LiveData 组合用法 ; DataBinding 使用核心要点 : 首先 , 启用 DataBinding , build.gradle 构建脚本 " android

1.3K20

livedatabus详解,阿里是如何用他来做淘宝架构

Android Studio 提供迁移工具(Refactor > Migrate to AndroidX)可以将源码旧包名替换成新,但是如果 Maven 依赖产物还未迁移到 AndroidX...下面将要讲到 LiveData ViewModel 都是 Lifecycle-Aware Components,它们都用到了 Lifecycle。...除此之外,ViewModel 也可以用做 MVVM 模式 VM 层,利用 Data Binding 直接把 ViewModel LiveData 属性绑定到 xml 元素上,xml 声明式写法避免了很多样板代码...;如果只想对 LiveData value 做一些映射,可以使用Transformations.map,目前 Transformations 只有这两个操作符,因为不管 Kotlin 还是 Java8...进离场动画启动选项很好理解,出栈行为是一个比较强大功能,action 箭头所指方向表示目标页面入栈,箭头反方向则表示目标页面出栈,而出栈行为 Navigation 编辑器完全可控,我们可以指定要出栈到哪个页面

1.1K30

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

second.value = 0 } } 该类中提供了 postValue setValue 两个函数 , UI 主线程 调用 setValue 函数 , 非 UI 线程子线程...; 使用 传统开发方式 , 可以使用 线程通信 , Handler 或者 广播 等形式 , 子线程通知主线程更新 UI ; 使用 LiveData 后 , 将数据定义 LiveData ,...+ LiveData 代码 自定义 ViewModel 子类继承 ViewModel , ViewModel , 定义 LiveData 类型数据 , 此处选择使用 MutableLiveData...+ LiveData 代码 自定义 ViewModel 子类继承 ViewModel , ViewModel , 定义 LiveData 类型数据 , 此处选择使用 MutableLiveData...代码 先将 ViewModel LiveData 数据 进度值设置给 SeekBar , 目的是为了屏幕旋转时 , 可随时恢复数据 ; SeekBar 拖动数据 , 修改 ViewModel

1.2K20

Android技术栈(四)Android Jetpack MVVM 完全实践

image.png 1 MVVM总览 本文包含AndroidMVVM体系很多部分,主要对ViewModel+DataBinding+RxJava+LiveData+Lifecycle等笔者所使用技术体系进行解析...MVP模式解决了MVC存在分层问题,Presenter层被突出强调,实际上也就是真正意义上实现了MVC 但是MVP其实仍然存在一些问题,比如当业务逻辑变得复杂以后,IPresenterIView...但是MVVM也有自己缺点,那就是使用MVVM情况下ViewModel与View层通信变得更加困难了,所以一些极其简单页面请酌情使用,否则就会有一种脱裤子放屁感觉,使用MVP这个道理也依然适用...,还请指点一二 如果你模块同时使用kotlinDataBinding是可以,但是请一定不要使用kapt,除非JB那帮大佬搞定这些奇怪问题..... 2.3.2 转义字符 熟悉xml同学可能都知道xml是非法字符,那么要使用泛型时候,我们就需要使用xml转义字符<>来进行转义 //↓错误,编译时会报错

3.7K01

Jetpack--LifeCycle、ViewModelLiveData

,降低了模块耦合度,一定程度上避免了没有及时销毁资源情况,降低了内存泄漏发生 二、ViewModel Jetpack,官方提供了ViewModel组件,我们应该继承它实现我们ViewModel...还具有异步调用不会造成内存泄漏优点,需要结合LiveData使用ViewModel生命周期是独立于Activity 三、LiveData LiveData对象提供了可观测方法,当数据发送改变时...,观测方能够观测到,并且线程安全,集成了LifeCycle绑定生命周期特性 1.来实现一个定时器,线程更新定时时间,使用LiveData使得ui上进行更新 布局文件很简单,一个TextView <?...中使用ViewModel,并观测LiveData值,ui线程中使用setValue方法设置LiveData值,非ui线程使用postValue方法 package com.aruba.livedata...ViewModel进度值观察,注意这边获取ViewModel时Owner要用Activity上下文,因为实现联动需要使用同一个ViewModel,不同Owner会生成不同实例 package com.aruba.livedata2

1.6K20
领券