首页
学习
活动
专区
工具
TVP
发布
精选内容/技术社群/优惠产品,尽在小程序
立即前往

MVVM中的ViewModel (数据绑定)与Android架构组件中的ViewModel有何不同

MVVM中的ViewModel是指视图模型,它是MVVM架构中的一部分,用于连接视图和模型之间的通信。ViewModel负责处理视图的数据展示逻辑和用户交互逻辑,它通过数据绑定将视图与模型进行解耦,使得视图可以独立于具体的数据源。

Android架构组件中的ViewModel也是一种视图模型,但它是针对Android开发而设计的。它的主要作用是在配置变更(如屏幕旋转)时保持数据的一致性,并且可以在Activity或Fragment之间共享数据。ViewModel通过使用生命周期感知的方式来存储和管理与UI相关的数据,以确保数据在配置变更时不会丢失。

虽然两者都是视图模型,但它们在以下几个方面有所不同:

  1. 设计目的:MVVM中的ViewModel旨在解耦视图和模型,使得视图可以独立于具体的数据源。而Android架构组件中的ViewModel旨在解决配置变更时数据丢失的问题,并提供数据共享的能力。
  2. 数据绑定:MVVM中的ViewModel通过数据绑定将视图与模型进行解耦,实现数据的自动更新。而Android架构组件中的ViewModel并不直接提供数据绑定功能,它更多地关注数据的存储和管理。
  3. 生命周期:MVVM中的ViewModel的生命周期通常与视图的生命周期相同,当视图销毁时,ViewModel也会被销毁。而Android架构组件中的ViewModel的生命周期更长,它会在配置变更时保持存活状态,并在新的Activity或Fragment创建时被重用。

综上所述,虽然两者都是视图模型,但MVVM中的ViewModel更加关注数据绑定和解耦视图与模型,而Android架构组件中的ViewModel更加关注数据的一致性和共享。在实际开发中,可以根据具体的需求选择适合的ViewModel实现。

页面内容是否对你有帮助?
有帮助
没帮助

相关·内容

“终于懂了“系列:Jetpack AAC完整解析(四)MVVM - Android架构探索!

点击上方胡飞洋可以关注哦~ 前面三篇介绍了Jetpack 架构组件 最重要 部分:生命周期组件-Lifecycle、感知生命周期数据组件-LiveData、视图模型组件-ViewModel。...这篇,就来探索下目前android开发 最优秀、讨论最多架构模式—— MVVM 。 几个月前,我所在项目完成了 MVVM 架构改造。这篇在开始写之前,我也阅读了大量MVVM文章。...MVVM MVVMAndroid开发是如何实现呢?接着看~ 到这里你会发现,所谓架构模式本质上理解很简单。...四、总结 本篇介绍了 架构模式含义,回顾和比较了Android架构模式MVC、MVP、MVVM,最好在 Jetpack架构组件 基础上 介绍了 MVVM 详细实现方法、注意点,以及MVP改造。...所以,下一篇,将继续介绍 Jetpack AAC 组件数据绑定组件 DataBinding、数据组件 Room,作为 Jetpack MVVM 完善补充点。

1.9K10

MVVM 进阶版:MVI 架构了解一下~

唯一区别是,它采用双向数据绑定(data-binding):View变动,自动反映在 ViewModel,反之亦然 MVVM架构图如下所示: [1240] 可以看出MVVMMVP主要区别在于...MVVM双向数据绑定主要通过DataBinding实现,不过相信很多人跟我一样,是不喜欢用DataBinding,这样架构就变成了下面这样 [1240] View观察ViewModle数据变化并自我更新...,这其实是单一数据源而不是双向数据绑定,所以其实MVVM这一大特性我其实并没有用到 View通过调用ViewModel提供方法来ViewMdoel交互 小结 MVC架构主要问题在于Activity...MVI MVVM 很相似,其借鉴了前端框架思想,更加强调数据单向流动和唯一数据源,架构图如下所示 [1240] 其主要分为以下几部分 Model: MVVMModel不同是,MVI...,MVP,MVVMMVI架构,目前MVVM是官方推荐架构,但仍然以下几个痛点 MVVMMVP主要区别在于双向数据绑定,但由于很多人(比如我)并不喜欢使用DataBindg,其实并没有使用MVVM

1.9K20

“终于懂了“系列:Jetpack AAC完整解析(五)DataBinding 重新认知!

点击上方胡飞洋可以关注哦~ 前面四篇介绍了Jetpack 架构组件 基础组件 以及它们综合应用:Jetpack MVVM 架构模式,到这里已经基本满足标准化开发了。...DataBinding,将布局界面组件直接绑定数据源,提供双向绑定,及高级绑定适配能力。...1.1.2 数据绑定 DataBinding,含义是 数据绑定,即 布局控件 可观察数据 进行绑定。...四、Jetpack MVVM 补充说明 讲完DataBinding,所有的 Jetpack 架构组件 重点内容 就全部讲完了。...可见DataBinding 在 Jetpack MVVM 架构 还是 很大优势。 最后补充说明得了 Jetpack MVVM 架构 使用注意事项和原则,在实际项目使用 应该会很有体会。

1.4K10

浅谈开发MVVM模式及MVP和MVC区别

我记得前段时间分享了一篇文章《 浅谈Andorid开发MVP模式》(点击可跳转),反响不错,为了进一步介绍MVVM模式,还提前分享了实现AndroidMVVM模式一个关键技术文章《Android...MVVM(Model-View-ViewModel)框架由来便是MVP(Model-View-Presenter)模式WPF结合应用方式时发展演变过来一种新型架构框架。...MVVM架构: Model:代表你基本业务逻辑 View:显示内容 ViewModel:将前面两者联系在一起对象 一个ViewModel接口提供了两个东西:动作和数据。...界面素来是比较难于测试,而现在测试可以针对ViewModel来写。 具体怎么好用,怎么使用,建议参考我写Android 数据绑定框架DataBinding,堪称解决界面逻辑黑科技》这篇文章。...参考文章: 《 浅谈Andorid开发MVP模式》(点击可跳转) 《Android 数据绑定框架DataBinding,堪称解决界面逻辑黑科技》(点击可跳转)

1.9K100

正确认识 MVCMVPMVVM

MVVM MVVM = Model-View-ViewModel MVC、MVP 不同就在于最后一个部件,换成了 ViewModel(VM)。...可看出,MVVM 关系图和 MVP 很相似,最大不同在于 View 和 ViewModel 之间主要是通过数据绑定方案来实现交互。 要理解 MVVM,我们先来理解什么是 ViewModel?...这就涉及到数据绑定两种类型: 单向绑定ViewModel View 绑定之后,ViewModel 变化后,View 会自动更新,但反之不然,即数据传递方向是单向。...(ViewModel —> View) 双向绑定ViewModel View 绑定之后,如果 View 和 ViewModel 任何一方变化后,另一方都会自动更新,这就是双向绑定。...MVVM 使用 我们重点讲解下如何用 Jetpack 实现 MVVM 架构,Jetpack 提供了多个架构组件,包括 ViewModel、LiveData、DataBinding 等,Android

2.5K32

引入Jetpack架构后,你App会发生哪些变化?

关于Activity/Fragment其最重要概念就是生命周期管理,我们开发者需要在不同生命周期回调不同事情。...相提并论,其实这二者根本没有在同一个层次,MVVM ViewModelMVVM架构一个角色,看不见摸不着只是一种思想。...关于这个问题我在上篇文章Data Mapper章节描述很清楚,拿到后端数据转换成本地模型(此过程会编写所有数据相关逻辑),本地模型设计图一一对应,不但可以将视图后段隔离,而且可以解决xml编写业务逻辑问题...分层固然重要,但MVVM最核心点是通过ViewModel数据驱动UI以及双向绑定操作用来解决数据/UI一致性问题。...不管是双向绑定还是单向驱动,只要能保证数据、UI一致,那它就符合MVVM思想 其实我上篇文章也简单说过,好架构不应该局限到某一种模式(MVC/MVP/MVVM)上,需要根据自己项目的实际情况不断添砖加瓦

1.9K80

引入Jetpack架构后,你App会发生哪些变化?

前言 上篇文章我给大家分享了我对Android架构理解,从思想层面去讲述架构演进过程。...关于Activity/Fragment其最重要概念就是生命周期管理,我们开发者需要在不同生命周期回调不同事情。...相提并论,其实这二者根本没有在同一个层次,MVVM ViewModelMVVM架构一个角色,看不见摸不着只是一种思想。...关于这个问题我在上篇文章Data Mapper章节描述很清楚,拿到后端数据转换成本地模型(此过程会编写所有数据相关逻辑),本地模型设计图一一对应,不但可以将视图后段隔离,而且可以解决xml编写业务逻辑问题...分层固然重要,但MVVM最核心点是通过ViewModel数据驱动UI以及双向绑定操作用来解决数据/UI一致性问题。

81200

引入Jetpack架构后,你App会发生哪些变化?

了Lifecycle,再也不用担心生命周期同步问题 为什么要做生命周期绑定? 关于Activity/Fragment其最重要概念就是生命周期管理,我们开发者需要在不同生命周期回调不同事情。...,其实这二者根本没有在同一个层次,MVVM ViewModelMVVM架构一个角色,看不见摸不着只是一种思想。...而Jetpack ViewModel是一个实实在在框架用于做状态托管,对应作用域可跟随Activity/Fragment生命周期,但这种特性恰好可以充当MVVM ViewModel角色,分隔数据层和视图层并做数据托管...关于这个问题我在上篇文章Data Mapper章节描述很清楚,拿到后端数据转换成本地模型(此过程会编写所有数据相关逻辑),本地模型设计图一一对应,不但可以将视图后段隔离,而且可以解决xml编写业务逻辑问题...分层固然重要,但MVVM最核心点是通过ViewModel数据驱动UI以及双向绑定操作用来解决数据/UI一致性问题。

99231

Google 推荐在 MVVM 架构中使用 Kotlin Flow

Jetpack + MVVM 实战应用,和神奇宝贝(PokemonGo) 很多不同之处,神奇宝贝(PokemonGo) 主要偏向于 Paging3 分页处理,以及 Flow 在 MVVM 实战...Google 推荐在 MVVM 使用 Kotlin Flow Google 推荐在 MVVM 中使用 Kotlin Flow我相信如今几乎所有的 Android 开发者至少都听过 MVVM 架构,在...直到我打开[ Android 架构组件 ](https://developer.android.com/topic/libraries/architecture/index.html)页面,看了在页面上增加了最新文章...DataBinding(数据绑定)实际上是 XML 布局另一个视图结构层次,视图 (XML) 通过数据绑定层不断地 ViewModel 交互,如下所示: PokemonGo/app/src/main...如何处理 ViewModel 三种方式 如果不使用数据绑定,在 Activity 或者 Fragment 如何处理 ViewModel 三种方式。

4.1K20

如何构建Android MVVM应用程序

MVVM模式ViewModel和View是用绑定关系来实现,所以了DataBinding 使我们构建Android MVVM 应用程序成为可能。   ...MVC View:对应于xml布局文件 Model:实体模型 Controllor:对应于Activity业务逻辑,数据处理和UI处理 从上面看起来各个组件职责视乎还挺耦合MVC,但是打开Android...,打造了一个更加灵活高效架构。...ViewModelView协作 ViewModelModel协作 ViewModelViewModel协作 ViewModelView协作 图 2 图 2 ViewModel 和View...希望这篇博客在如何构建Android MVVM应用程序对你有所帮助,如有任何疑问,可以给我留言,欢迎大家共同探讨,如果对MVVM Light Toolkit 任何问题,也可以反馈给我。

1.2K10

如何构建Android MVVM 应用框架

MVVM是一种架构模式,而DataBinding是一个实现数据和UI绑定框架,是构建MVVM模式一个工具。...从上面这个结构来看,Android本身设计还是符合MVC架构,但是Android纯粹作为ViewXML视图功能太弱,我们大量处理View逻辑只能写在Activity,这样Activity就充当了...MVVM目标和思想MVP类似,利用数据绑定(Data Binding)、依赖属性(Dependency Property)、命令(Command)、路由事件(Routed Event)等新特性,打造了一个更加灵活高效架构...在MVVM数据是直接绑定到UI控件上(部分数据是可以直接反映出UI上内容),那么我们就可以直接通过修改绑定数据源来间接做一些Android UI上测试。...上图反映了MVVM框架各个模块联系和数据走向,我们从每个模块一一拆分来看。那么我们重点就是下面的三个协作。 ViewModelView协作。 ViewModelModel协作。

4.4K60

Android应用架构-MVVM模式

MVVM模式 MVVM (Model-View-ViewModel) 模式结构如下图所示: MVVM模式MVP模式一样,也将应用分为三层,并且各个对应职责相似: Model层,主要负责数据提供...通过官方提供Data Binding库,View层和ViewModel数据可以实现绑定ViewModel数据变化可以自动通知View层进行更新,因此ViewModel层不需要持有View...ViewModel层可以看作是View层数据模型和Presenter层结合。 MVVM模式MVP模式最大区别在于:ViewModel层不持有View层引用。...在xml布局文件,通过官方提供Data Binding库,将UIViewModel数据进行绑定,当ViewModel数据发生变化时,UI将自动更新。xml布局文件代码如下所示: <?...各个层职责单一不同,但他们都结构清晰,应用起来十分便捷 Android零基础系列教程:Android基础课程 本文转自 Android | Android应用架构MVVM模式_cyc专栏-CSDN

44110

是时候更新手里武器了—Jetpack架构组件简析

今天给大家带来是Jetpack架构组件,这个模块组件可以说就是为MVVM框架服务,当然每个库也都是可以单独使用。...Jetpack-架构组件 先简单说下MVVM,Model—View—ViewModel。 Model层主要指数据,比如服务器数据,本地数据数据,所以网络操作和数据库读取就是这一层,只保存数据。...迫不及待了吧,跟随我一起看看每个库神奇之处。 数据绑定数据绑定库是一种支持库,借助该库,您可以使用声明性格式(而非程序化地)将布局界面组件绑定到应用数据源。...5)将布局视图绑定架构组件 这一块就是实际应用了,和jetpack其他组件相结合使用,形成完整MVVM分层架构。...常规可观察类不同,LiveData 具有生命周期感知能力,意指它遵循其他应用组件(如 Activity、Fragment 或 Service)生命周期。

2.9K20

用代码手把手教你使用MVVM

MVVM是一种架构模式,而DataBinding是一个实现数据和UI绑定框架,是构建MVVM模式一个工具。...MVC View:xml布局 Model:数据层,负责数据交互、存储和实体类定义 Controller:业务处理层 Android开发本身还是比较符合MVC架构,但是Android纯粹作为View...简而言之:View层不做任何业务逻辑、不涉及操作数据,UI和数据严格分开。 UI更新和事件相应全部使用数据绑定,也就是DataBinding来实现。这就是MVVM和MVP、MVC很明显不同之处。...,调用网络请求库;网络库(Retrofit等)服务器进行交互; 服务器将json数据返回Retrofit等网络库,再返回到Model层ViewModel在回调收到返回实体类对象; 因为xml实体类对象实现了双向绑定...但是,一点不同是实体类继承了BaseObservable,稍后我们再说。 Model类 ?

1.9K20

Android应用架构未来:深入理解MVI模式及其优势

在MVI,每个组件都有明确定义职责: 模型(Model):负责管理应用状态数据,并对外部事件做出响应。 视图(View):负责显示界面,并将用户操作转化为意图(Intent)。...MVI、MVVM、MVP对比 MVVM(Model-View-ViewModel)和MVP(Model-View-Presenter)是另外两种常见架构模式,它们MVI架构有着不同特点和应用场景...MVVM 特点: 双向数据绑定MVVM通过双向数据绑定实现了View和ViewModel之间自动同步,减少了手动更新UI代码量。...对比总结 数据流方向: MVI:单向数据流,从Model到View。 MVVM:双向数据绑定,View和ViewModel之间自动同步。...结论 通过本文介绍,相信大家已经对MVI架构模型了更深入理解。MVI架构模式通过其清晰单向数据流和可预测状态管理,为Android应用开发提供了一种有效方式。

22210

Android MVVM 架构应用实现

MVVM架构使用组件ViewModel、LiveData、ViewBinding/DataBinding等,这些组件都是Jetpack库组件。...MVVM架构示意图,以及相关组件在其中作用。...[MVVM架构图] 了解了MVVM基本架构和其中各个组件作用,可以开始代码实现了。我做这个项目的初衷是因为最近在整理收集Android常用开源库,为了更方便展示所实现一个应用。...() } 自此,一个MVVM架构应用搭建完成,第一次独立搭建MVVM架构之后,对于MVVM架构理解加深了不少,对于JetPack库组件和其它开源库也有了新认识,此外...本项目使用开源组件库:koin、timber、permissionx、BaseRecyclerViewAdapterHelper 视频:Android中高级进阶之MVVMJetPack

1.2K20

Android应用架构前世今生

mvvm MVVM可以算是MVP升级版,其中VM是ViewModel缩写,ViewModel可以理解成是View数据模型和Presenter合体,ViewModel和View之间交互通过Data...View和Model之间通过Android Data Binding技术,实现视图和数据双向绑定ViewModel持有Model引用,通过Model方法请求数据;获取数据后,通过Callback...(回调)方式回到ViewModel,由于ViewModelView双向绑定,使得界面得以实时更新。...同时,界面输入数据变化时,由于双向绑定技术,ViewModel数据得以实时更新,提高了数据采集效率。...google在官方示例给出了一系列不同架构app实现,项目目的是通过展示各种架构app不同方式来帮助开发者解决架构问题。

85570

Android应用架构前世今生

mvvm MVVM可以算是MVP升级版,其中VM是ViewModel缩写,ViewModel可以理解成是View数据模型和Presenter合体,ViewModel和View之间交互通过Data...View和Model之间通过Android Data Binding技术,实现视图和数据双向绑定ViewModel持有Model引用,通过Model方法请求数据;获取数据后,通过Callback...(回调)方式回到ViewModel,由于ViewModelView双向绑定,使得界面得以实时更新。...同时,界面输入数据变化时,由于双向绑定技术,ViewModel数据得以实时更新,提高了数据采集效率。...google在官方示例给出了一系列不同架构app实现,项目目的是通过展示各种架构app不同方式来帮助开发者解决架构问题。

58260

Android MVVM框架搭建(一)ViewModel + LiveData + DataBinding

③ 实现登录 二、LiveData使用 ① 可修改数据数据观察 三、DataBinding使用 ① 单向绑定 ② 双向绑定 四、源码 前言   MVVM框架出来已经一段时间了,现在也有很多项目运用了...DataBinding数据绑定库是一种支持库,借助该库,您可以使用声明性格式(而非程序化地)将布局界面组件绑定到应用数据源。...① 绑定Activity 在MVVM框架,每一个Activity都应该对应一个ViewModel,而现在我们一个MainActivity,因此可以新建一个viewmodels包,包下新建一个MainViewModel...DataBinding,顾名思义就是数据绑定,可以看到现在三个组件都与数据有关系,ViewModel数据持有,LiveData数据观察、DataBinding数据绑定。...,第一个是数据源,这里绑定ViewModel,那么相对应ViewModel数据数据都可以拿到。

2.1K32
领券