MVVM 学习
作为 MVVM 初学者,直接阅读官方权威文档是避坑和建立正确认知的最好方式。
在 Android 开发的演进中,MVVM 的实现经历了从“手动实现”到“官方库支持(Jetpack)”,再到“现代化异步流(Kotlin Flow)”的过程。
以下我为你整理的权威学习资源,按照概念 → 经典实现 → 现代标准的顺序排列,重点关注官方文档(Google Android Developers 和 JetBrains Kotlin)。
1. 基础理论:Observer / Observable (观察者模式)
这是 MVVM 的基石。虽然你不需要自己写一个 Observer 类(因为框架都封装好了),但理解其原理至关重要。
- 权威定义 (Refactoring Guru): 这是一个非常棒的设计模式学习网站,图文并茂,适合初学者。
- Android 中的体现:
- 在 Android 中,最典型的
Observer接口来自于androidx.lifecycle包。 - API 参考:androidx.lifecycle.Observer
- 在 Android 中,最典型的
2. 核心容器:Jetpack ViewModel
ViewModel 是 MVVM 中的 “VM”。它的核心作用是在配置变更(如屏幕旋转)时存活,防止数据丢失。
- Google 官方指南 (必读): 这是最权威的入口,解释了 ViewModel 的生命周期和基本用法。
- API 参考:
3. 第一代数据流:LiveData
LiveData 是 Google 为了解决 Android 生命周期问题而专门推出的 Observable。它在 2017-2020 年是 Android MVVM 的标准配置。
- Google 官方指南: 解释了什么是“生命周期感知型”组件。
- 关键特性:
- 它知道 UI (Activity/Fragment) 什么时候是“活跃”的,避免后台更新 UI 导致崩溃。
- 主要用于 Java 项目或早期的 Kotlin 项目。
4. 现代化标准:StateFlow / SharedFlow (Kotlin Flow)
这是重点! 如果你现在开始学习新项目,或者使用 Jetpack Compose,请将重点放在这里。StateFlow 是 Kotlin 语言层面的特性,比 LiveData 功能更强大,性能更好,且不依赖 Android 平台代码。
- Google 官方指南 (Android 视角): 解释了为什么以及如何在 Android 中使用 StateFlow 代替 LiveData。
- JetBrains 官方文档 (语言视角):
- 迁移指南: 如果你看到旧教程用 LiveData,想知道怎么改成 StateFlow,看这个。
各种设计模式的集合:https://refactoringguru.cn/design-patterns/observer