外观
ViewModel 到底解决什么问题?
标准回答
ViewModel 用于保存屏幕级 UI 状态并组织相关业务逻辑。它让 Activity 或 Fragment 负责显示和接收操作,并在配置变化重建时保留同一作用域下的状态,避免无意义地重建页面数据。(ViewModel 概览)
机制解释
想象“设备列表页面”是显示器,ViewModel 是这块页面当前的工作台:正在加载、设备列表、错误信息、选中设备都可由它管理。旋转时显示器换了一个,工作台可以继续用。普通成员变量跟旧页面一起丢失;静态变量则边界过大,难清理、难隔离。
延伸追问
为什么不把所有数据都放 ViewModel?它不是数据库,也不是任意页面共享的全局仓库,更不负责直接持有 View。长连接归属和持久化应根据业务生命周期放在 Repository、会话管理或数据层。
内容来源
- Android 智能硬件 SDK 技术 Wiki · 原条目
Q28