MVVM 架构简介
了解在基于MVVM的应用程序中,数据如何在数据库和用户界面之间流动。
什么是架构?
架构本质上是指应用程序的结构。在开发软件时,开始之前最需要掌握的核心内容之一,就是如何组织代码,使其最符合产品需求,而这就是架构的作用。
MVVM
模型-视图-视图模型(MVVM) 是安卓开发者常用的一种架构,也是谷歌推荐的方案。MVVM 由微软架构师提出,旨在简化软件开发中的设计模式,主要目的是将前端与后端分离,降低视图与其他组件之间的依赖关系。MVVM 设计模式被用来解决依赖问题和关注点分离的问题,从而构建出更易于维护、便于测试,并能快速适应变化的代码。
MVVM 架构流程
下图将作为指南,帮助我们理解 MVVM 架构中事件的流动过程。
一个安卓应用通常包含两个部分:用户界面(UI)或展示层,以及处理数据并准备将其传递给用户或后端存储单元的后端或业务逻辑层。
如上图所示,MVVM 包含三个核心组件:模型(Model)、视图(View)和视图模型(ViewModel)。下面我们逐一详细说明。
视图(View)
视图 如其名所示,指的是用户界面。这里包含了 Activity 和 Fragment 等组件。
视图模型(ViewModel)
视图模型 负责存储和管理与 UI 相关的逻辑与处理流程,减少重复代码,并确保 UI 组件仅专注于单一职责——绘制界面。
为什么使用 ViewModel 而不是其他类?因为 ViewModel 具备生命周期感知能力,这意味着它能够管理和响应应用生命周期的变化,在不引发崩溃或内存泄漏的情况下正确处理这些变化。同时,它还能让数据在配置变更(如屏幕旋转)时保持存活,使界面在旋转后仍能保持原有状态。
模型(Model)
模型 作为应用程序的数据持有者,通常与数据访问对象(DAO) 和仓库(Repository) 配合使用,用于封装数据,并通过 ViewModel 类将数据提供给 UI。
ViewModel 将所有这些复杂操作抽象化,向 UI 组件屏蔽了诸如生命周期变化和配置更改等细节,使得 Activity 和 Fragment 更加轻量,从而为用户提供快速且流畅的体验。