android 下MVVM的应用

本文深入解析MVVM架构,探讨其核心概念,如Model、View、ViewModel的职责划分,以及数据驱动UI、关注点分离的设计原则。同时,介绍了dataBinding、RxJava等关键技术,并通过与MVC、MVP对比,阐述MVVM的优势。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

什么是MVVM?

model: 数据模型,数据的获取、存储等

view: activity,fragment,view,xml等

viewModel:负责view与model的交互,基于databinding

数据驱动UI

在MVC和MVP中 都是先获取到view的引用,然后再赋值,更新。 而在MVVM中是由数据驱动UI,数据在架构中成为主导因素,

开发者重点关注怎样处理数据,保证数据的正确性。

在常规的开发模式中, 数据变化需要更新UI的时候,需要先获取UI的引用,然后再更新UI。获取用户的输入和操作的时候也是要通过UI控件的引用,在MVVM中,这些都是通过数据驱动自动完成的,不需要直接和UI打交道,这样在业务处理中就方便很多。

 

关注点分离

任何与系统无关的事情都不可以放在Activity或Fragment中,尽可能的保证轻量,避免很多生命周期方面的问题,

Model只关注数据源,ViewModel关注数据与业务 不直接与UI打交道,view关心如何显示数据与和用户的交互,赋予了获取数据的职责,与平时只定义数据对象的方式截然不同。实例中,数据的获取,存储,状态变化都是model层的任务,model包括实体模型(Bean), Retrofit的Service,获取网络数据接口,获取数据库增删改查接口,数据变化监听等。model提供数据供vm调用,经数据转换和操作最终映射绑定至View层的UI元素上。

 

view不写业务逻辑不写业务逻辑与业务数据处理相关代码,更新UI通过数据绑定实现,View层可以处理事件(但是我们更希望UI事件通过Command来绑定)。简单地说:View层不做任何业务逻辑、不涉及操作数据、不处理数据,UI和数据严格的分开。

ViewModel不持有任何UI控件的引用,ViewModel只做业务逻辑和业务数据相关的事情, 通过双向绑定获取view层反馈给vm的数据并对这些数据,在这些数据上做操作, 对于UI事件的处理,我们也希望把这些事件处理绑定在控件上,把一个个事件封装成一个个command,对每个事件我们用一个ReplyCommand处理就行了,ReplyCommand会把你需要的数据带给你,这使得我们再viewmodel中只关心数据就好了 (ViewModel 不做和UI相关的事)。

 

技术点:

dataBinding  、RxJava 、MVVMLight、Command

引用文章:

美团技术团队:如何构建Android MVVM 应用框架 https://cloud.tencent.com/developer/article/1058151 

使用Kotlin構建Android MVVM應用進程:https://hk.saowen.com/a/ab78a4dabcfb50ac01638580c57006f91c5a08c6f3655871272bbfebcb570558

 

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值