首页
学习
活动
专区
工具
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实现。

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

相关·内容

  • 如何构建Android MVVM应用程序

    Databinding 是一种框架,MVVM是一种模式,两者的概念是不一样的。我的理解DataBinding是一个实现数据和UI绑定的框架,只是一个实现MVVM模式的工具。ViewModel和View可以通过DataBinding来实现单向绑定和双向绑定,这套UI和数据之间的动态监听和动态更新的框架Google已经帮我们做好了。在MVVM模式中ViewModel和View是用绑定关系来实现的,所以有了DataBinding 使我们构建Android MVVM 应用程序成为可能。   之前看了很多关于DataBinding的博客和相关的一些Demo,大多数就是往xml布局文件传入一些数据,然后把这些数据绑定到控件上( 如TextView binding:text=“@{user.name} ),接着在这些控件上(如Button binding:setOnClickListener="@{user.listener}") 设置一些事件到控件上,基本讲述都是DataBinding的基本用法。但是并没有人告诉你把一个onClickListener 写到一个类并把这个listener绑定到xml里面上是不是不太好,也没有人告诉你这个和xml布局绑定的ViewModel类应该放哪些数据,应该做什么事?应该如何设计?更是很少有博文来告诉你在Android 中如何通过Data Binding 去构建MVVM 的应用框架。这也就是是本篇文章的重点。接下来,我们先来看看什么是MVVM,然后在一步一步来设计整个应用程序框架。

    01

    Android Jetpack系列——Android Jetpack介绍

    早在2008年,Google 推出了Android ,但那个时候 Android 刚刚问世,经过这将近11年的发展和不断优化,Android 可以说逐渐变得成熟,方便和应用越来越广。 随着 Android 手机的市场保有量越来越多,APP的研发朝着愈发的简单化,易上手的方向发展。而 Google 也是站在这一个角度出发,如何快速得让一个研发人员开发出一款APP,也可以快速的添加新的开发人员。 现在在 Google 应用市场当中,大部分 APP 已经开始使用 Android Jetpack。通过 Android Jetpack 可以让我们的 BUG 减少,让我们把更多的精力放在打造应用本身。 为了这种模板式的开发,Google 在2018年推出了 Android Jetpack。接下来,我将会通过一系列的文章来介绍Android Jetpack,旨在希望了解、学习、应用Android Jetpack的小伙伴一个参考资料。

    03

    Jetpack初步了解

    通常来说,一个Android应用程序至少需要一个Activity,当我们开发小型Android程序时,可能会将大部分代码写在Activity/Fragment中,例如业务逻辑,UI控件,数据库的CRUD等。针对小型项目而言,这并没什么问题,维护起来也很方便,但对于中大型项目而言,随着业务复杂度的增加,Activity/Fragment中的代码会变得越来越多,越来越难以维护。因此,我们需要将代码按照功能或类型的不同进行分类,并放到不同的包或类文件中,但又不能破坏彼此间正常的通信。这在软件开发中叫做解耦,为了将代码解耦以应对日益膨胀的代码量,工程师引入了“架构”的概念。使得在不影响应用程序各模块组件间通信的同时,还能保持模块的相对独立,这样不仅有利于后期的维护,也有利于代码的测试。

    01
    领券