返回顶部
首页 > 资讯 > 移动开发 >Android MVVM详解
  • 571
分享到

Android MVVM详解

android架构设计模式 2023-09-01 09:09:59 571人浏览 安东尼
摘要

一、MVVM组成 (1).Model:数据层,包含数据实体和对数据实体的操作 (2).View:界面层,对应于Activity,XML,View,负责数据显示以及用户交互。 (3).ViewModel:关联层,将Model和View进行绑定

一、MVVM组成

(1).Model:数据层,包含数据实体和对数据实体的操作
(2).View:界面层,对应于Activity,XML,View,负责数据显示以及用户交互。
(3).ViewModel:关联层,将Model和View进行绑定,Model或者View更改时,实时刷新对方。

使用细节

1.View只做和UI相关的工作,不涉及任何业务逻辑,不涉及操作数据,不处理数据。UI和数据严格的分开
2.ViewModel只做和业务逻辑相关的工作,不涉及任何和UI相关的操作,不持有控件引用,不更新UI。

二、Android MVVM持有关系与模式图

 

View
显而易见Activity/Fragment(XML)便是MVVM中的View,当收到ViewModel传递过来的数据时,Activity/Fragment负责将数据以你喜欢的方式显示出来。当然View还包括ViewDataBinding

ViewModel
ViewModel作为Activity/Fragment与其他组件的连接器。负责转换和聚合Model中返回的数据,使这些数据易于展示,并把这些数据改变即时通知给Actvity/Fragment。
ViewModel是具有生命周期意识的,当Activity/Fragment销毁时ViewModel的onClear方法会被回调,你可以在这里做一些清理工作。LiveData是具有生命周期意识的一个可观察的数据持有者,ViewModel中的数据有LiveData持有,并且只有当Activity/Fragment处于活动时才会通知UI数据的改变,避免无用的刷新UI。

Model
Repository及其下方就是model了。Repository负责提取和处理数据。数据来源可以是本地数据库,也可以来自网络,这些数据统一有Repository处理,一般对外隐藏数据获取方式

Binder绑定器
Android中的数据绑定技术由DataBinding和LiveData共同实现。当Activity/Fragment接收到来自ViewModel中的新数据时(由LiveData自动通知数据的改变),将这些数据通过DataBinding绑定到ViewDataBinding中,UI将会自动刷新。

三、Jetpack组件

1.databind

使用声明性格式将布局中的界面组件绑定到应用的数据源(就是相互赋值),viewModel与view进行交互的核心组件,注意对 Binding Adapter的使用官方使用

2.viewModel

官方介绍

ViewModel is a class that is responsible for preparing and managing the data for an Activity or a Fragment. It also handles the communication of the Activity / Fragment with the rest of the application (e.g. calling the business logic classes)

ViewModel是一个负责为Activity或Fragment准备和管理数据的类。它还处理Activity/Fragment与应用程序其余部分的通信(例如调用业务逻辑类)。

屏幕旋转Activity 与ViewMode声明周期对比

可以看到即使是发生屏幕旋转,旋转之后拿到的ViewModel跟之前的是同一个实例,即发生屏幕旋转时,ViewModel并不会消失重建;而如果Activity是正常finish(),ViewModel则会调用onClear()销毁。

基于此我们应该了解:

  • ViewModel可以在Activity配置更改中保留其状态。它保存的数据可立即供下一个Activity实例使用,无需在onSaveInstanceState()中保存数据并手动恢复。
  • ViewModel比特定的Activity或Fragment实例更长。
  • ViewModel允许在Fragments之间轻松共享数据(这意味着您不再需要通过活动协调操作)。
  • ViewModel将保留在内存中,直到它的作用域生命周期永久消失.
  • 由于ViewModel比Activity或Fragment实例更长,因此它不应直接引用其中的任何Views或保持对上下文的引用。这可能会导致内存泄漏
  • 如果ViewModel需要Application上下文(例如,查找系统服务),它可以继承AndroidViewModel类并具有在构造函数中接收Application的构造函数。

3.LiveData

LiveData是一个可观察的数据存储类,它可以包含任何类型的数据,并在数据发生变化的时候通知给观察者,也就是Activity\Fragment,让它及时更新。LiveData只会将更新通知传递给处于活跃状态的观察者(STARTED\RESUMED)。

当Lifecycle对象的状态变为DESTROYED的时候,也就是Activity\Fragment生命周期被销毁时,系统会立即退订

官方地址

注意点:LiveData是一种可观察的数据存储器类。通俗点说就是存储数据,同时可以被观察者观察数据的变化,具有生命周期感知能力,这种感知能力可确保LiveData仅更新处于活跃生命周期状态的应用组件观察者。

因此,在其他应用场景要考虑数据丢包问题

 

来源地址:https://blog.csdn.net/Mubly/article/details/128341646

--结束END--

本文标题: Android MVVM详解

本文链接: https://lsjlt.com/news/388012.html(转载时请注明来源链接)

有问题或投稿请发送至: 邮箱/279061341@qq.com    QQ/279061341

猜你喜欢
  • Android MVVM详解
    一、MVVM组成 (1).Model:数据层,包含数据实体和对数据实体的操作 (2).View:界面层,对应于Activity,XML,View,负责数据显示以及用户交互。 (3).ViewModel:关联层,将Model和View进行绑定...
    99+
    2023-09-01
    android 架构 设计模式
  • Android MVVM 解读 2.MVC, MVP, MVVM
    #Android MVVM background info 包含的信息 MVC, MVP, MVVM的介绍 MVC, MVP, MVVM的区别 ...
    99+
    2022-06-06
    MVC mvvm Android
  • Android mvvm之LiveData原理案例详解
    1. 生命周期感知 1.1 生命周期感知组件 我们知道,Controller(Activity or Fragment) 都是有生命周期的,但是传统的 Controller 实现方式...
    99+
    2024-04-02
  • 详解Android的MVVM框架 - 数据绑定
    本教程是跟着 Data Binding Guide 学习过程中得出的一些实践经验,同时修改了官方教程的一些错误,每一个知识点都有对应的源码,争取做到实践与理论相结合。Data Binding 解决了 Android UI 编...
    99+
    2023-05-31
    android mvvm 双向绑定
  • 详解Android框架MVVM分析以及使用
    Android MVVM 分析以及使用 首先我们需要知道什么是MVVM,他的功能和优点,以及他的缺点。 MVVM是Model-View-ViewModel的简写。它本质上就是MVC ...
    99+
    2024-04-02
  • Android MVVM Demo
    Android轻量级MVVM demo, 简单易读易上手: https://gitee.com/aican/mvvm_demo mvvm框架的d...
    99+
    2022-06-06
    demo mvvm Android
  • Android MVVM架构实现RecyclerView列表详解流程
    目录效果图导入引用导入Recyclerview依赖导入dataBinding引用代码解析建立实体类建立RecyclerView子项适配器建立适配器设置子项点击事件adapter全部代...
    99+
    2024-04-02
  • Android实现MVVM架构数据刷新详解流程
    目录效果图示例结构图代码解析导入dataBinding实体类xml视图VM绑定视图与数据层效果图 示例结构图 代码解析 导入dataBinding dataBinding{...
    99+
    2024-04-02
  • MVC、MVP、MVVM简介;Android应该如何使用MVVM
    背景 目前,android流行的MVC、MVP模式的开发框架很多,然而一款基于MVVM模式开发的项目并不多。我们从当前的技术现状出发,分析下如何...
    99+
    2022-06-06
    MVC mvvm Android
  • 详解Vue生命周期和MVVM框架
    目录生命周期与动态组件有关的两个特殊的钩子:与组件异常捕获有关的一个钩子:生命周期有哪些生命周期 组件从开始到结束的全过程 创建阶段:beforeCreate、created挂载阶段...
    99+
    2024-04-02
  • Android快速搭建MVVM框架
    架构上面是从一个开源项目中了解到的框架结构,以最简洁的方式搭建一个app的基础框架。框架的几个特点是:通过Jetpack的Navigation构建单Activity多Fragment结构,我们知道Activity是属于比较重的组件,而Fra...
    99+
    2022-06-06
    mvvm Android
  • android mvvm框架怎么搭建
    要搭建Android MVVM框架,您可以按照以下步骤进行: 创建Android项目:使用Android Studio创建一个新...
    99+
    2023-10-22
    android
  • Android用kotlin搭建MVVM框架(一)
    Android用kotlin搭建MVVM框架(一) 什么是MVVM搭建MVVM框架 什么是MVVM Android的项目框架,大家应该都不陌生吧。而目前的项目框架有MVC,MVP,MVVM...
    99+
    2023-10-11
    android kotlin android studio
  • Android中的mvvm有哪些特点
    Android中的MVVM(Model-View-ViewModel)有以下特点: 分离视图逻辑和业务逻辑:MVVM将界面的布局...
    99+
    2024-02-29
    Android
  • 详细聊聊Vue.js中的MVVM
    目录MVVM的理解MVVM的原理脏检查机制:数据劫持相同点实现MVVM总结MVVM的理解 MVVM拆开来即为Model-View-ViewModel,有View,ViewModel...
    99+
    2024-04-02
  • Android技术框架篇(三):MVVM框架
    目录 一、MVVM架构的基本概念 二、MVVM架构的核心思想 三、MVVM架构的实现方式 四、MVVM架构的优缺点 五、MVVM架构的应用场景 一、MVVM架构的基本概念 以下是MVVM架构的基本概念的简要总结: 概念描述Model数...
    99+
    2023-08-31
    android java
  • 如何在iOS上使用MVVM进行路由详解
    前言 我已经在几个项目中使用MVVM了一段时间,我真的很喜欢它的简单性。特别是,如果你像许多人一样从MVC迁移,你只需要在你的架构中增加一层ViewModel。如果您发现太多层级造成...
    99+
    2022-05-25
    ios mvvm 路由
  • Android MVVM架构怎么实现RecyclerView列表
    本篇内容主要讲解“Android MVVM架构怎么实现RecyclerView列表”,感兴趣的朋友不妨来看看。本文介绍的方法操作简单快捷,实用性强。下面就让小编来带大家学习“Android MVVM架构怎么实现RecyclerView列表”...
    99+
    2023-06-25
  • 《Android编程权威指南》项目三 MVVM架构实战解析
    本文将通过一个BeatBox项目详细解析MVVM架构的使用以及android中主题样式的使用分析 目录效果如图项目结构前期准备 SingleFragmentActivityactivity_single_fragment BeatB...
    99+
    2022-06-06
    实战 mvvm Android
  • android 的android httpClient详解
    Android HttpClient是Android平台提供的一个HTTP请求客户端,使用它可以方便地发送HTTP请求并获得请求的响...
    99+
    2023-09-21
    Android
软考高级职称资格查询
编程网,编程工程师的家园,是目前国内优秀的开源技术社区之一,形成了由开源软件库、代码分享、资讯、协作翻译、讨论区和博客等几大频道内容,为IT开发者提供了一个发现、使用、并交流开源技术的平台。
  • 官方手机版

  • 微信公众号

  • 商务合作