视图与数据模型之间的桥梁 ViewModel
在页面(Activity/Fragment)功能较为单一的情况下,通常会将UI交互、数据获取等相关的业务逻辑放在一起,这也是传统MVC的开发架构。但是在页面复杂的情况下,这样做是很有问题的,不仅耦合度很高,更致命的是,一旦修改核心的东西,牵一发而动全身,因为这种开发范式不符合“SRP单一功能职责”,页面只应该负责处理用户与UI控件的交互,并将数据展示到屏幕上。与数据相关的业务逻辑应该单独处理和存放。
简介
为了更好的将只能划分清楚,谷歌为我们开发设计的Jetpack组件库里就提供了 ViewModel 类,专门用于存放应用程序页面所需的数据。ViewModel这个词可以这样理解:它是介于View(视图)和Model(数据模型POJO)之间的一个桥接。它起到了一个桥梁的作用,使得视图和数据既能够分离开,也能够保持互通。正因为此,我们很有必要去了解它背后的实现工作原理,这样才能掌握它实现存储数据的技能要点。
什么是ViewModel?
ViewModel 是具备宿主生命周期感知能力的数据存储组件,使用ViewModel保存的数据,在页面因配置【横竖屏切换、分辨率调整、权限变更、系统字体样式变更等等】变更导致的页面销毁重建,也依然存在。
ViewModel 优势
- 页面配置更高数据不丢失
- 生命周期感应
- 页面之间实现数据共享
ViewModel 如何使用
首先是添加依赖项