架构组件之 ViewModel | 中文教学视频

生命周期管理库 (Lifecycles) 由三个组件构成,包括 Lifecycle、LiveData 和 ViewModel。它可以用来解决常见的生命周期问题,同时使您的应用程序易于测试且可维护。

ViewModel 用于提供和管理 UI 界面的数据。通过使用 ViewModel,开发者可以方便的将 UI 界面和数据逻辑剥离开来,从而达到 UI 界面 Activity 和 Fragment 负责显示数据和处理用户操作;ViewModel 则负责提供和管理 UI 界面的数据,并且负责和数据层通讯的效果。与此同时,也让您在开发过程中更好地遵循单一职责的设计原则。此外,ViewModel 的另一大特点是它不会因为配置变更而销毁。

架构组件之 ViewModel | 中文教学视频

在视频的代码示例中,我们使用了 Kotlin 来创建 ViewModel, 创建 ViewModel 方法如下:

  • 在 build.gradle 文件里加入生命周期管理库 (Lifecycle);
  • 继承 ViewModel 类;
  • 使用 ViewModelProviders 来关联 ViewModel 和相对应的UI组件

接着把曾经保存在 UI 界面中的数据剥离出来,使用 ViewModel 来管理这些数据。如果您需要自定义 ViewModel 的构造函数,则使用 ViewModelProvider.NewInstanceFactory。

我们还推荐开发者同时使用 ViewModel 和另一个生命周期组件 LiveData 来实现响应式的 UI 界面。

注意事项:不要在 ViewModel 中引用 View,使用 LiveData 来通知界面更新;不要混淆 ViewModel 和 onSaveInstanceState 方法的用途。

另,生命周期管理库 LiveDataRoom 视频即将上线,敬请期待

更多详细内容介绍,请访问以下文档链接

架构组件的官方开发者文档

ViewModel 的文档

应用程序架构指南

使用生命周期管理库的架构组件实例 -Java

使用生命周期管理库的架构组件实例 - Kotlin

架构组件实例

ViewModelFactory 实例

Android 生命周期备忘录

视频播放列表地址

腾讯视频链接

优酷链接

YouTube 链接

本文参与腾讯云自媒体分享计划,欢迎正在阅读的你也加入,一起分享。

发表于

我来说两句

0 条评论
登录 后参与评论

相关文章

来自专栏歪先生_自留地

树梅派折腾---安装

15620
来自专栏程序员与猫

计算机组成原理之机器

1.1 计算机系统概论 1.1 计算机系统简介 把感应器嵌入和装备到电网,铁路,桥梁等各种物体中,并且被普遍连接,形成所谓“物联网”,然后将“物联网”与现代计算...

20190
来自专栏美丽应用

玩转Volumio的DLNA特性

45840
来自专栏PingCAP的专栏

使用 Rust 构建分布式 Key-Value Store

构建一个分布式 Key-Value Store 并不是一件容易的事情,我们需要考虑很多的问题,本文将以我们开发的分布式 Key-Value TiKV 作为实际例...

70410
来自专栏Jerry的SAP技术分享

SAP S4CRM 1811 服务订单API介绍

Jerry在今年2月28日,SAP Customer Management for S/4HANA 1.0正式问世这个具有纪念意义的日子,同时发布了中英文版的博...

18930
来自专栏信安之路

端口扫描那些事

在渗透测试中端口扫描是非常重要的一环,不管是在外围对企业边界信息收集的过程还是在内网渗透中对内网的信息收集。如何判断主机或服务器端口的开放情况就显得尤为重要,下...

30700
来自专栏阮一峰的网络日志

Usenet:P2P下载的替代方法

在上一篇网志中,我已经说了,我打算好好研究和介绍usenet。 下面就是我翻译的第一篇教程。它的信息量很大,非常通俗实用。基本上,读完这篇文章,你就会使用use...

44880
来自专栏静晴轩

Gulp折腾之路(III)

微注: 前端更新实在是迅捷!谈及前端打包工具,Gulp 取代 Grunt荣登王者,其宝座还未热乎,16年 Webpack 便劈天盖地席卷而来。即便笔者在记叙这篇...

36750
来自专栏知晓程序

微信,我小鸡忍你很久了…… | 开发

19850
来自专栏用户2442861的专栏

必不可少的Firefox插件

Adblock Plus 去广告,包括youku的开头广告 All-in-One Sidebar 最大的好处就是省去书签栏 NoSquint :用firefo...

68410

扫码关注云+社区

领取腾讯云代金券