第 2 章 使用 MVVM 模式构建应用

重放2018样例中的 ViewModel、Data Binding、Fragment、Navigator、生命周期与消息协议;用责任合同、生命周期回放和迁移门交付MVVM 责任表、绑定表达式清单、导航事件账本与重建回归轨迹

学习目标

  • 解释2018 MVVM 样例、页面状态、绑定、导航、生命周期与一次性效果中的状态所有者、事件方向、生命周期与恢复,而不只罗列模式或库名
  • 用单一反例“把 Snackbar 当持久页面状态,重建观察者后重复显示同一副作用”定位第 2 章 使用 MVVM 模式构建应用的首个错误状态
  • 交付MVVM 责任表、绑定表达式清单、导航事件账本与重建回归轨迹,严格区分2018最终版、早期草案和当前官方迁移轨道

为什么从这个问题开始

第 2 章 使用 MVVM 模式构建应用围绕“书中手写 MVVM 怎样与当前 Jetpack ViewModel 分轨,并避免一次性消息重放?”建立贯穿任务:在最终2018版目录与同一业务/案例约束内重放2018 MVVM 样例、页面状态、绑定、导航、生命周期与一次性效果。先预测界面实例、状态所有者、事件队列、订阅或数据源中的首个变化,再运行参考、故障和恢复路径;只有守住“第 2 章 使用 MVVM 模式构建应用的规格、唯一状态所有者、事件方向、生命周期、失败恢复和版本轨道始终可追溯”并交付MVVM 责任表、绑定表达式清单、导航事件账本与重建回归轨迹,模式名、库名、类图或一次成功演示才可能成为机制证据。

最终版、官方样章与当前迁移边界

第 2 章 使用 MVVM 模式构建应用以PEAKS 正式商品页核对日高正博、小西裕介、藤原圣、吉冈毅、今井智章五位作者,2018年1月31日,224页,B5变形,PDF,ISBN 9784909427021。最终结构是三部八章,并含前言、后记、索引和作者介绍。

第 2 章 使用 MVVM 模式构建应用使用PEAKS 官方样章 PDF的29个 PDF 页面,核对文件创建于2018年1月26日、修改于1月30日,以及公开的前言、完整最终目录和有限样章内容。TechBooster 官方样例仓库提供出版时期的可运行参照。本站来源级别为 authorized-sample:样章用于核对结构和有限事实,不能推断未公开正文,更不能复制原书段落、图表、代码或练习。

早期众筹草案最初列四位作者、250页以上与更早交付计划,还计划了未进入最终书的 Kotlin 等内容。草案只作为排除证据。本站没有官方中文译本授权,页面是中文独立教学重构,不是翻译版,也不替代购买原书。

第 2 章 使用 MVVM 模式构建应用把2018历史轨道与当前轨道并列而不混写:原作按出版时期的 MVP、MVVM、RxJava、Support Library、Architecture Components 和 React Native 案例解释;当前迁移再依据Android 应用架构指南核对 UI/数据/可选领域层、状态持有者、单一事实源和单向数据流。

本页独立事实来源

  • PEAKS 官方样章 PDF:在第 2 章 使用 MVVM 模式构建应用中,核对最终版前言、完整目录、页码、章节标题与样章内容边界。
  • TechBooster 官方样例仓库:在第 2 章 使用 MVVM 模式构建应用中,核对出版时期 MVP、MVVM 与 Architecture Components 样例的可运行边界。
  • Android 当前 Data Binding 指南:在第 2 章 使用 MVVM 模式构建应用中,核对布局绑定表达式、生成绑定类与双向绑定风险。
  • Android 当前 ViewModel 指南:在第 2 章 使用 MVVM 模式构建应用中,核对 ViewModelStoreOwner 作用域、配置变更与 SavedStateHandle 边界。
  • Android 当前应用架构指南:在第 2 章 使用 MVVM 模式构建应用中,核对当前 UI/数据/可选领域层、单一事实源、单向数据流和状态持有者建议。

最终版正式坐标逐项解释

第 2 章 使用 MVVM 模式构建应用

坐标 1/15:第 2 章 使用 MVVM 模式构建应用。稳定证据键 ADP-02MVVMAPPLICATIONSTRUCTURE-A。 第 2 章 使用 MVVM 模式构建应用把第 2 章 使用 MVVM 模式构建应用落实为 View 投影状态、ViewModel 处理页面意图、数据边界提供事实;持久状态与导航/Snackbar 等一次性效果分开建模。 第 2 章 使用 MVVM 模式构建应用只有保存共同输入、状态所有者、事件/调用方向、生命周期、单一故障、恢复和版本边界,才能把目录名称升级为可验证知识;类名、依赖数量或一次成功演示都不能单独通过发布门。

2.1 基本概念

坐标 2/15:2·1 基本概念。稳定证据键 ADP-02MVVMAPPLICATIONSTRUCTURE-B。 第 2 章 使用 MVVM 模式构建应用把2·1 基本概念绑定到同一 TODO 功能、团队规模和发布约束,用修改扩散、测试隔离、恢复行为与认知成本比较候选方案。 第 2 章 使用 MVVM 模式构建应用只有保存共同输入、状态所有者、事件/调用方向、生命周期、单一故障、恢复和版本边界,才能把目录名称升级为可验证知识;类名、依赖数量或一次成功演示都不能单独通过发布门。

2.2 环境准备

坐标 3/15:2·2 环境准备。稳定证据键 ADP-02MVVMAPPLICATIONSTRUCTURE-C。 第 2 章 使用 MVVM 模式构建应用把2·2 环境准备冻结新增、编辑、删除、列表、持久化、错误与恢复规格,并记录工具链、模块、依赖和样例提交,确保模式比较只改变一个边界。 第 2 章 使用 MVVM 模式构建应用只有保存共同输入、状态所有者、事件/调用方向、生命周期、单一故障、恢复和版本边界,才能把目录名称升级为可验证知识;类名、依赖数量或一次成功演示都不能单独通过发布门。

2.3 样例应用设计

坐标 4/15:2·3 样例应用设计。稳定证据键 ADP-02MVVMAPPLICATIONSTRUCTURE-D。 第 2 章 使用 MVVM 模式构建应用把2·3 样例应用设计冻结新增、编辑、删除、列表、持久化、错误与恢复规格,并记录工具链、模块、依赖和样例提交,确保模式比较只改变一个边界。 第 2 章 使用 MVVM 模式构建应用只有保存共同输入、状态所有者、事件/调用方向、生命周期、单一故障、恢复和版本边界,才能把目录名称升级为可验证知识;类名、依赖数量或一次成功演示都不能单独通过发布门。

2.4 与 MVP 架构比较

坐标 5/15:2·4 与 MVP 架构比较。稳定证据键 ADP-02MVVMAPPLICATIONSTRUCTURE-E。 第 2 章 使用 MVVM 模式构建应用把2·4 与 MVP 架构比较落实为 View→Presenter→数据边界→Presenter→View 的窄契约,并用 attach/detach 后零旧 View 调用验证生命周期隔离。 第 2 章 使用 MVVM 模式构建应用只有保存共同输入、状态所有者、事件/调用方向、生命周期、单一故障、恢复和版本边界,才能把目录名称升级为可验证知识;类名、依赖数量或一次成功演示都不能单独通过发布门。

2.5 TODO 应用规格

坐标 6/15:2·5 TODO 应用规格。稳定证据键 ADP-02MVVMAPPLICATIONSTRUCTURE-F。 第 2 章 使用 MVVM 模式构建应用把2·5 TODO 应用规格冻结新增、编辑、删除、列表、持久化、错误与恢复规格,并记录工具链、模块、依赖和样例提交,确保模式比较只改变一个边界。 第 2 章 使用 MVVM 模式构建应用只有保存共同输入、状态所有者、事件/调用方向、生命周期、单一故障、恢复和版本边界,才能把目录名称升级为可验证知识;类名、依赖数量或一次成功演示都不能单独通过发布门。

2.6 项目基本结构

坐标 7/15:2·6 项目基本结构。稳定证据键 ADP-02MVVMAPPLICATIONSTRUCTURE-G。 第 2 章 使用 MVVM 模式构建应用把2·6 项目基本结构冻结新增、编辑、删除、列表、持久化、错误与恢复规格,并记录工具链、模块、依赖和样例提交,确保模式比较只改变一个边界。 第 2 章 使用 MVVM 模式构建应用只有保存共同输入、状态所有者、事件/调用方向、生命周期、单一故障、恢复和版本边界,才能把目录名称升级为可验证知识;类名、依赖数量或一次成功演示都不能单独通过发布门。

2.7 理解 ViewModel 的角色

坐标 8/15:2·7 理解 ViewModel 的角色。稳定证据键 ADP-02MVVMAPPLICATIONSTRUCTURE-H。 第 2 章 使用 MVVM 模式构建应用把2·7 理解 ViewModel 的角色先区分书中 MVVM 角色名与当前 Jetpack ViewModel 类型,再核对状态作用域、写权限、配置变更和进程死亡恢复。 第 2 章 使用 MVVM 模式构建应用只有保存共同输入、状态所有者、事件/调用方向、生命周期、单一故障、恢复和版本边界,才能把目录名称升级为可验证知识;类名、依赖数量或一次成功演示都不能单独通过发布门。

2.8 使用数据绑定配置 View

坐标 9/15:2·8 使用数据绑定配置 View。稳定证据键 ADP-02MVVMAPPLICATIONSTRUCTURE-I。 第 2 章 使用 MVVM 模式构建应用把2·8 使用数据绑定配置 View核对布局表达式、生成绑定类、观察源和双向写入口;减少样板代码不代表状态所有权清楚。 第 2 章 使用 MVVM 模式构建应用只有保存共同输入、状态所有者、事件/调用方向、生命周期、单一故障、恢复和版本边界,才能把目录名称升级为可验证知识;类名、依赖数量或一次成功演示都不能单独通过发布门。

2.9 使用 Fragment 构建界面

坐标 10/15:2·9 使用 Fragment 构建界面。稳定证据键 ADP-02MVVMAPPLICATIONSTRUCTURE-J。 第 2 章 使用 MVVM 模式构建应用把2·9 使用 Fragment 构建界面限定为界面宿主、装配点和生命周期入口;业务事实、长任务与数据所有权不得随具体实例销毁。 第 2 章 使用 MVVM 模式构建应用只有保存共同输入、状态所有者、事件/调用方向、生命周期、单一故障、恢复和版本边界,才能把目录名称升级为可验证知识;类名、依赖数量或一次成功演示都不能单独通过发布门。

2.10 使用 Navigator 处理动作

坐标 11/15:2·10 使用 Navigator 处理动作。稳定证据键 ADP-02MVVMAPPLICATIONSTRUCTURE-K。 第 2 章 使用 MVVM 模式构建应用把2·10 使用 Navigator 处理动作把导航视为带参数、结果、取消和返回栈语义的效果边界;ViewModel/Presenter 发出意图,界面层执行并记录一次性消费。 第 2 章 使用 MVVM 模式构建应用只有保存共同输入、状态所有者、事件/调用方向、生命周期、单一故障、恢复和版本边界,才能把目录名称升级为可验证知识;类名、依赖数量或一次成功演示都不能单独通过发布门。

2.11 ViewModel 的创建与存活期

坐标 12/15:2·11 ViewModel 的创建与存活期。稳定证据键 ADP-02MVVMAPPLICATIONSTRUCTURE-L。 第 2 章 使用 MVVM 模式构建应用把2·11 ViewModel 的创建与存活期先区分书中 MVVM 角色名与当前 Jetpack ViewModel 类型,再核对状态作用域、写权限、配置变更和进程死亡恢复。 第 2 章 使用 MVVM 模式构建应用只有保存共同输入、状态所有者、事件/调用方向、生命周期、单一故障、恢复和版本边界,才能把目录名称升级为可验证知识;类名、依赖数量或一次成功演示都不能单独通过发布门。

2.12 把用户操作传给 ViewModel

坐标 13/15:2·12 把用户操作传给 ViewModel。稳定证据键 ADP-02MVVMAPPLICATIONSTRUCTURE-M。 第 2 章 使用 MVVM 模式构建应用把2·12 把用户操作传给 ViewModel先区分书中 MVVM 角色名与当前 Jetpack ViewModel 类型,再核对状态作用域、写权限、配置变更和进程死亡恢复。 第 2 章 使用 MVVM 模式构建应用只有保存共同输入、状态所有者、事件/调用方向、生命周期、单一故障、恢复和版本边界,才能把目录名称升级为可验证知识;类名、依赖数量或一次成功演示都不能单独通过发布门。

2.13 从 Snackbar 理解 View 与 ViewModel 之间的消息难题

坐标 14/15:2·13 从 Snackbar 理解 View 与 ViewModel 之间的消息难题。稳定证据键 ADP-02MVVMAPPLICATIONSTRUCTURE-N。 第 2 章 使用 MVVM 模式构建应用把2·13 从 Snackbar 理解 View 与 ViewModel 之间的消息难题先区分书中 MVVM 角色名与当前 Jetpack ViewModel 类型,再核对状态作用域、写权限、配置变更和进程死亡恢复。 第 2 章 使用 MVVM 模式构建应用只有保存共同输入、状态所有者、事件/调用方向、生命周期、单一故障、恢复和版本边界,才能把目录名称升级为可验证知识;类名、依赖数量或一次成功演示都不能单独通过发布门。

2.14 MVVM 模式的思想背景

坐标 15/15:2·14 MVVM 模式的思想背景。稳定证据键 ADP-02MVVMAPPLICATIONSTRUCTURE-O。 第 2 章 使用 MVVM 模式构建应用把2·14 MVVM 模式的思想背景落实为 View 投影状态、ViewModel 处理页面意图、数据边界提供事实;持久状态与导航/Snackbar 等一次性效果分开建模。 第 2 章 使用 MVVM 模式构建应用只有保存共同输入、状态所有者、事件/调用方向、生命周期、单一故障、恢复和版本边界,才能把目录名称升级为可验证知识;类名、依赖数量或一次成功演示都不能单独通过发布门。

先预测,再运行三个证据视图

先预测:只注入“把 Snackbar 当持久页面状态,重建观察者后重复显示同一副作用”时,第 2 章 使用 MVVM 模式构建应用的界面实例、状态所有者、事件队列、订阅、数据源或迁移边界中哪一项最先偏离?先写下可观察信号,再比较参考、故障和恢复轨迹。

分步1 / 3

责任合同:选择正式目录坐标

责任—事件—状态合同

第 2 章 使用 MVVM 模式构建应用

选择正式目录坐标,逐步核对输入、唯一状态所有者、事件方向和可观察输出。

阶段 1/5

第 2 章 使用 MVVM 模式构建应用 · 规格与版本

输入与约束
在最终2018版目录与同一业务/案例约束内重放2018 MVVM 样例、页面状态、绑定、导航、生命周期与一次性效果
唯一状态所有者
来源清单与共同业务规格是比较合同的唯一所有者
事件与数据方向
锁定最终版坐标、样例提交、平台版本、功能输入和验收结果
输出与裁决
第 2 章 使用 MVVM 模式构建应用的来源快照、输入合同和未知项;没有把众筹草案、当前框架或课程解释冒充2018原书事实

最小可重现实验协议

  1. 为第 2 章 使用 MVVM 模式构建应用冻结最终版坐标、样例提交、设备/API、业务输入、初始数据、线程/调度、界面宿主和预期输出。
  2. 运行参考路径,逐阶段保存MVVM 责任表、绑定表达式清单、导航事件账本与重建回归轨迹;只看类图、一次截图或最终界面,无法证明责任与生命周期机制。
  3. 保持其余条件不变,只注入“把 Snackbar 当持久页面状态,重建观察者后重复显示同一副作用”,记录首个状态分岔、传播路径、用户影响和撤销后的同输入恢复。
  4. 把2018原作结论与当前官方迁移分别评估;迁移有效也不能回写成原作事实。

小结与上架门

  • MVVM样例以页面状态、绑定、导航和生命周期限定正常路径。
  • 状态所有者与事件方向解释正常路径,生命周期定位首个错误。
  • 恢复轨迹与迁移门决定能否发布,需报告草案排除与历史边界。
  • 最终交付MVVM责任表、绑定表达式清单、导航事件账本与重建轨迹。

练习与答案

练习

问题 1:第 2 章 使用 MVVM 模式构建应用

为第 2 章 使用 MVVM 模式构建应用中稳定证据键 ADP-02MVVMAPPLICATIONSTRUCTURE-A 对应的第 2 章 使用 MVVM 模式构建应用设计一个固定输入、一个状态所有者、一个单一生命周期或协作故障和一个恢复检查,说明2018结论与当前迁移怎样分轨。

问题 2:2.1 基本概念

为第 2 章 使用 MVVM 模式构建应用中稳定证据键 ADP-02MVVMAPPLICATIONSTRUCTURE-B 对应的2·1 基本概念设计一个固定输入、一个状态所有者、一个单一生命周期或协作故障和一个恢复检查,说明2018结论与当前迁移怎样分轨。

问题 3:2.2 环境准备

为第 2 章 使用 MVVM 模式构建应用中稳定证据键 ADP-02MVVMAPPLICATIONSTRUCTURE-C 对应的2·2 环境准备设计一个固定输入、一个状态所有者、一个单一生命周期或协作故障和一个恢复检查,说明2018结论与当前迁移怎样分轨。

问题 4:2.3 样例应用设计

为第 2 章 使用 MVVM 模式构建应用中稳定证据键 ADP-02MVVMAPPLICATIONSTRUCTURE-D 对应的2·3 样例应用设计设计一个固定输入、一个状态所有者、一个单一生命周期或协作故障和一个恢复检查,说明2018结论与当前迁移怎样分轨。

问题 5:2.4 与 MVP 架构比较

为第 2 章 使用 MVVM 模式构建应用中稳定证据键 ADP-02MVVMAPPLICATIONSTRUCTURE-E 对应的2·4 与 MVP 架构比较设计一个固定输入、一个状态所有者、一个单一生命周期或协作故障和一个恢复检查,说明2018结论与当前迁移怎样分轨。

问题 6:2.5 TODO 应用规格

为第 2 章 使用 MVVM 模式构建应用中稳定证据键 ADP-02MVVMAPPLICATIONSTRUCTURE-F 对应的2·5 TODO 应用规格设计一个固定输入、一个状态所有者、一个单一生命周期或协作故障和一个恢复检查,说明2018结论与当前迁移怎样分轨。

问题 7:2.6 项目基本结构

为第 2 章 使用 MVVM 模式构建应用中稳定证据键 ADP-02MVVMAPPLICATIONSTRUCTURE-G 对应的2·6 项目基本结构设计一个固定输入、一个状态所有者、一个单一生命周期或协作故障和一个恢复检查,说明2018结论与当前迁移怎样分轨。

问题 8:2.7 理解 ViewModel 的角色

为第 2 章 使用 MVVM 模式构建应用中稳定证据键 ADP-02MVVMAPPLICATIONSTRUCTURE-H 对应的2·7 理解 ViewModel 的角色设计一个固定输入、一个状态所有者、一个单一生命周期或协作故障和一个恢复检查,说明2018结论与当前迁移怎样分轨。

问题 9:2.8 使用数据绑定配置 View

为第 2 章 使用 MVVM 模式构建应用中稳定证据键 ADP-02MVVMAPPLICATIONSTRUCTURE-I 对应的2·8 使用数据绑定配置 View设计一个固定输入、一个状态所有者、一个单一生命周期或协作故障和一个恢复检查,说明2018结论与当前迁移怎样分轨。

问题 10:2.9 使用 Fragment 构建界面

为第 2 章 使用 MVVM 模式构建应用中稳定证据键 ADP-02MVVMAPPLICATIONSTRUCTURE-J 对应的2·9 使用 Fragment 构建界面设计一个固定输入、一个状态所有者、一个单一生命周期或协作故障和一个恢复检查,说明2018结论与当前迁移怎样分轨。

问题 11:2.10 使用 Navigator 处理动作

为第 2 章 使用 MVVM 模式构建应用中稳定证据键 ADP-02MVVMAPPLICATIONSTRUCTURE-K 对应的2·10 使用 Navigator 处理动作设计一个固定输入、一个状态所有者、一个单一生命周期或协作故障和一个恢复检查,说明2018结论与当前迁移怎样分轨。

问题 12:2.11 ViewModel 的创建与存活期

为第 2 章 使用 MVVM 模式构建应用中稳定证据键 ADP-02MVVMAPPLICATIONSTRUCTURE-L 对应的2·11 ViewModel 的创建与存活期设计一个固定输入、一个状态所有者、一个单一生命周期或协作故障和一个恢复检查,说明2018结论与当前迁移怎样分轨。

问题 13:2.12 把用户操作传给 ViewModel

为第 2 章 使用 MVVM 模式构建应用中稳定证据键 ADP-02MVVMAPPLICATIONSTRUCTURE-M 对应的2·12 把用户操作传给 ViewModel设计一个固定输入、一个状态所有者、一个单一生命周期或协作故障和一个恢复检查,说明2018结论与当前迁移怎样分轨。

问题 14:2.13 从 Snackbar 理解 View 与 ViewModel 之间的消息难题

为第 2 章 使用 MVVM 模式构建应用中稳定证据键 ADP-02MVVMAPPLICATIONSTRUCTURE-N 对应的2·13 从 Snackbar 理解 View 与 ViewModel 之间的消息难题设计一个固定输入、一个状态所有者、一个单一生命周期或协作故障和一个恢复检查,说明2018结论与当前迁移怎样分轨。

问题 15:2.14 MVVM 模式的思想背景

为第 2 章 使用 MVVM 模式构建应用中稳定证据键 ADP-02MVVMAPPLICATIONSTRUCTURE-O 对应的2·14 MVVM 模式的思想背景设计一个固定输入、一个状态所有者、一个单一生命周期或协作故障和一个恢复检查,说明2018结论与当前迁移怎样分轨。

问题 16:为什么必须分开两个时间轨道

第 2 章 使用 MVVM 模式构建应用怎样同时讲清2018原作和当前 Android 官方建议,而不造成时代错置?

问题 17:一次成功为什么不够

为什么第 2 章 使用 MVVM 模式构建应用中的正常截图、类图或单次演示不能证明架构边界成立?

六个证据术语

在第 2 章 使用 MVVM 模式构建应用中,组成最小证据语言。每个术语都必须绑定对象、版本、输入、状态与失败条件;只换架构名、库或框架不能自动扩大结论。

名词解释

本章出现的专业名词,用大白话再讲一遍。

状态所有者

第 2 章 使用 MVVM 模式构建应用中唯一允许修改某类事实的角色或数据源。

事件方向

第 2 章 使用 MVVM 模式构建应用中用户意图、数据结果与界面渲染的有向关系。

生命周期边界

第 2 章 使用 MVVM 模式构建应用中对象创建、活跃、停止、销毁和恢复的作用域。

一次性效果

第 2 章 使用 MVVM 模式构建应用中导航、提示或权限请求等不能随状态重复播放的输出。

单一故障

第 2 章 使用 MVVM 模式构建应用中保持其余条件不变时唯一改变的反例变量。

迁移轨道

第 2 章 使用 MVVM 模式构建应用对2018历史实践和当前官方建议分别记录的结论。

讨论

评论区加载中…