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

在Android mvvm中从视图调用viewModel的方法正确吗

在Android MVVM中,从视图调用ViewModel的方法是正确的。MVVM(Model-View-ViewModel)是一种软件架构模式,用于将用户界面(View)与业务逻辑(ViewModel)分离。ViewModel负责处理视图的状态和行为,并提供数据给视图展示。

从视图调用ViewModel的方法可以实现以下目的:

  1. 视图与ViewModel的解耦:通过调用ViewModel的方法,视图可以获取所需的数据和执行相应的操作,而不需要直接操作数据源或进行复杂的业务逻辑处理。
  2. 数据绑定:通过在视图和ViewModel之间建立双向数据绑定,视图可以实时更新显示数据,而ViewModel可以接收视图的输入并作出相应的响应。
  3. 代码复用:ViewModel中的方法可以被多个视图共享,避免了重复编写相同的代码。

然而,为了保持良好的架构和代码质量,应该遵循一些最佳实践:

  1. 视图应该尽量只关注展示逻辑,而不涉及业务逻辑。业务逻辑应该放在ViewModel中处理。
  2. 视图应该通过观察ViewModel中的可观察数据来更新自身的状态,而不是直接调用ViewModel的方法。
  3. ViewModel中的方法应该是纯粹的业务逻辑,不应该包含与视图相关的代码。如果需要与视图进行交互,可以使用LiveData或其他类似的机制。

对于Android开发中的MVVM架构,腾讯云并没有直接相关的产品或服务。然而,腾讯云提供了丰富的云计算服务,如云服务器、云数据库、云存储等,可以用于支持Android应用的后端需求。您可以访问腾讯云官方网站(https://cloud.tencent.com/)了解更多关于腾讯云的产品和服务信息。

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

相关·内容

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

这篇,就来探索下目前android开发 最优秀、讨论最多架构模式—— MVVM 。 几个月前,我所在项目完成了 MVVM 架构改造。这篇开始写之前,我也阅读了大量MVVM文章。...二、Android开发架构 具体到Android开发,开发架构就是描述 视图层、逻辑层、数据层 三者之间关系和实施: 视图层:用户界面,即界面的展示、以及交互事件响应。...MVVM MVVMAndroid开发是如何实现呢?接着看~ 到这里你会发现,所谓架构模式本质上理解很简单。...3.1 Jetpack MVVM 理解 Jetpack MVVMMVVM 模式 Android 开发一个具体实现,是 Android Google 官方提供并推荐 MVVM实现方式。...仓库层 要做主要工作是判断调用方请求数据应该是本地数据源获取还是网络数据源获取,并将获取到数据返回给调用方。

1.9K10

C# WPF MVVM开发框架Caliburn.Micro入门介绍①

所有参数都会自动转换为方法签名。此机制还允许“Action.Target”独立于DataContext而变化,并允许UI不同点触发器声明它。...当触发器发生时,“消息”元素树冒泡,寻找能够调用指定方法Action.Target(处理程序)。这就是为什么我们称之为信息。动作消息“冒泡”特性非常强大,非常有用,尤其是主/细节场景。...此外,我们将检查方法签名并正确构造ActionMessage参数。可以关闭或自定义此机制。您甚至可以更改或添加不同控件约定。...View 定位器 对于应用程序每个ViewModel,Caliburn.Micro都有一个基本策略来定位应该渲染它视图。我们是根据命名约定来做这件事。...此外,通过Xaml附加View.Context,我们支持同一视图模型上多个视图

1.7K20

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

换言之,使用 DataBinding 后,唯一改变是,你无需手动调用视图来 set 新状态,你只需 set 数据本身。...管理,并且 ViewModel 这一层只需负责状态数据本身变化,至于该数据布局是 被哪些视图绑定、有没有视图来绑定、以及怎么绑定,ViewModel 是不用关心。...、调用ViewModel对数据获取,这些处理及逻辑 和之前一毛一样,不同点在于 Item数据展示: UserItemViewHolder,不用去findViewById了,而是直接DataBindingUtil.bind...然后方法写逻辑即可,这里就是使用Glide加载用户头像,其中placeHolder是占位图。 这样就完成了 图片加载了! 使用确实相当简洁,相当于 直接自定义属性。...可见DataBinding Jetpack MVVM 架构 还是 有很大优势。 最后补充说明得了 Jetpack MVVM 架构 使用注意事项和原则,实际项目使用 应该会很有体会。

1.4K10

Android MVVM 架构应用实现

MVVM架构使用组件有ViewModel、LiveData、ViewBinding/DataBinding等,这些组件都是Jetpack库组件。...使用ViewModel之前要先建立四个类别的概念: ViewModelProcider.Factory:Factory用来生成ViewModel ViewModel:持有LiveData,Repository...[MVVM架构图] 了解了MVVM基本架构和其中各个组件作用,可以开始代码实现了。我做这个项目的初衷是因为最近在整理收集Android常用开源库,为了更方便展示所实现一个应用。...: 定义ViewModel,告诉Kioin哪里找到ViewModel和Repository并自动生成,这里我选择直接写在BaseApplication,需要注意是需要定义最外层,即和Classt...() { //LiveData视图层中注册监听后,ViewModel数据改变时可以持续收到数据 homeViewModel.libraryRecommendData.observe

1.2K20

一种MVVM风格Android项目架构浅析

前几天接触公司一Android项目,刚看代码时,不知道这么多层级代码都是干嘛,看着有点儿懵。只有清楚了结构和流程,才能够浩瀚代码里游刃有余。...Android,布局里可以进行一个视图逻辑,并且Model发生变化,View也随着发生变化。 低耦合。以前Activity、Fragment需要把数据填充到View,还要进行一些视图逻辑。...它咋就是MVVM风格呢? MainActivity,看不到findID和 控件事件响应方法以及界面更新方法。 在哪实现界面的操作和更新呢?这期中是怎样一种逻辑?...里面注册了RxBus,获取数据并对收到事件消息进行响应。调用VM(ViewModel接口方法,完成对界面数据更新操作。...这个应该是 Bean文件夹MVVM文件夹定义Bean,以及BaseActivity完成DataBanding充当了View层。 至此,MVVM 各个层已经介绍完了。

1.3K20

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

不过软件开发没有银弹,MVVM架构也不是尽善尽美的,使用过程也会有一些不太方便之处,而MVI可以很好解决一部分MVVM痛点。...: [1240] MVC架构主要分为以下几部分 视图层(View):对应于xml布局文件和java代码动态view部分 控制层(Controller):主要负责业务逻辑,android由Activity...,这其实是单一数据源而不是双向数据绑定,所以其实MVVM这一大特性我其实并没有用到 View通过调用ViewModel提供方法来与ViewMdoel交互 小结 MVC架构主要问题在于Activity...其次就是View层通过调用ViewModel方法来交互,View层与ViewModel交互比较分散,不成体系 小结一下,使用MVVM架构主要有以下不足 为保证对外暴露LiveData...ViewState是个data class,包含所有页面状态 View层通过Action更新ViewState,替代MVVM通过调用ViewModel方法交互方式 MVI实例介绍 添加ViewState

1.9K20

告诉你 Jetpack+MVVM 组合开发APP有多优秀!

JetPack 让 Android 一飞冲天 为了可以进行模板式开发,Google 2018年推出了 Android Jetpack。...Model-View-ViewModel 这个名字来看,它由三个部分组成,其中视图模型(ViewModel)其实就是 PM 模式展示模型。...除了我们非常熟悉 Model、View 和 ViewModel 这三个部分, MVVM 实现,还引入了隐式一个 Binder 层,我们要完整采用 MVVM 必须熟练掌握 DataBinding...为了帮助早日进阶成为高级安卓工程师,我们特邀中国联通资深架构师Allen老师为大家带来《基于ArtifactoryMVVM+Jetpack项目实战训练营》系列直播课程,让大家OOM和分页、错误处理等重复代码解放出来...Mvvm ViewModel怎样和Jetpack结合,OOM问题在MVVM怎样避免? 4月24日:App组件化和启动性能优化 Fragment和Activity错误处理页面有完美方案

94830

Android开发模式之MVC,MVP和MVVM简单介绍与区别

MVVM MVVM最早是由微软提出 ? 这里要感谢泡在网上日子,因为前面看到三张图我都是博客摘取,如果有人知道不允许这样做的话请告诉我,我会博客删除,谢谢。...层相关逻辑抽取了出来,并且相应时机调用ContributorView接口对应方法,而我们activity是实现了这个接口,自然会走到对应方法。...presenter获取了数据自然会调用相应方法,相应,你也可以自己presentermock数据,分发给view层,用来测试布局是否正确。...有人会说你可以把对model处理放到viewmodel,这样不是更符合MVVM设计理念?这样确实可以,但是progressDialogshow和dismiss呢?...当然这也不是固定,你大可以viewmodel实现相应接口,presenter层数据直接发送到viewmodelviewmodel里更新,因为view和viewmodel是绑定,这样view

2.6K82

用代码手把手教你使用MVVM

不足是,MVP模式定义了大量接口,使得代码结构变大和复杂;MVP是UI和事件驱动,需要手动调用大量方法来进行实现,缺乏自动性。...简述下数据流走向: View中使用DataBindingCommand来绑定事件和响应事件,触发网络请求;ViewModel进行分析处理,调用Model数据请求方法;Model将收到请求参数等信息封装...,调用网络请求库;网络库(Retrofit等)与服务器进行交互; 服务器将json数据返回Retrofit等网络库,再返回到Model层ViewModel回调收到返回实体类对象; 因为xml与实体类对象实现了双向绑定...: @{实体类.方法名} 涉及到图片加载:实体类中使用@BindingAdapter注解图偏加载方法布局引用url即可 因为本篇文章重点在于讲述MVVM框架使用,所以DataBinding只进行粗略简介...虽然现实生产中用Android MVVM模式开发还比较少,但是随着DataBinding 1.0发布,相信Android MVVM 这一领域会更多的人来尝试。

1.9K20

Android 面试题:为什么 Activity 都重建了 ViewModel 还存在?—— Jetpack 系列(3)

:数据驱动型界面控制器(本文)[2] 4、Flow:LiveData 替代方案[3] 5、 MVC 到 MVP、MVVM、MVI:Android UI 架构演进[4] 6、ViewBinding:新一代视图绑定方案...Activity / Fragment 视图无关职责抽离出来, MVP 模式叫作 Presenter, MVVM 模式叫作 ViewModel。...关于 MVVM 等模式更多内容,我们 5、 MVC 到 MVP、MVVM、MVI:Android UI 架构演进[10] 这篇文章讨论过。...MVVM 模式示意图: MVI 模式示意图: ViewModel 生命周期示意图: 1.2 ViewModel 使用方法 1、添加依赖: build.gradle 添加 ViewModel...get() 方法内部首先会通过 ViewModel 全限定类名映射表(ViewModelStore)取缓存,未命中才会通过 ViewModel 工厂创建实例再缓存到映射表

1.1K20

MVVM项目实战之路-搭建一个登录界面

本文基于Android Studio3.0 一.MVVM 首先,当然要先简单了解下什么是MVVM开发模式,来看一张图: ?...mvvm.png 可以看出,MVVM,我们代码结构分为三层: View 这里主要进行视图控件一些初始设置,不应该有任何数据逻辑操作 Model 在这层,会定义我们实体类,以及所有的业务逻辑操作...之前我们已经知道,ViewModel是View与Model层交互桥梁,所以具体用到业务数据,比如这里用户名,密码等我这里全部放到了ViewModel,然后将ViewModel与View进行绑定:...login()方法由点击登录按钮后触发,这里注意,因为loginName和loginPass已经与我们视图文件绑定在一起了,所以就不用在调用时候EditText获取文本内容再传进来了。...梳理一下逻辑: 点击登录按钮后,会调用LoginViewModellogin()方法,进行参数检查,如果参数不合法,为mSnackbarText设置对应文案提示,因为我们Activity已经监测了

2.1K70

项目架构三问—腾讯真题

MVP,MVVM,MVC 区别 MVC 架构介绍 Model:数据模型,比如我们数据库或者网络获取数据View:视图,也就是我们xml布局文件Controller:控制器,也就是我们Activity...Android一开始默认开发形式,所有东西都往Activity丢,然后能封装封装一下,根本分不出来这些层级。...然后最后演化成,将View层写成接口形式,然后Activity去实现View接口,最后Presenter类中去实现方法。 Model:数据模型,比如我们数据库或者网络获取数据。...MVP层,Presenter还是会持有View引用,但是MVVM,View和Model进行双向绑定,从而使viewModel基本只需要处理业务逻辑,无需关系界面相关元素了。...MVVM中使用了LiveData,那么需要更新View时候,如果观察者生命周期处于非活跃状态(如返回栈 Activity),则它不会接收任何 LiveData 事件。

51410

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

前言 上篇文章我给大家分享了我对Android架构理解,思想层面去讲述架构演进过程。...相提并论,其实这二者根本没有同一个层次,MVVM ViewModelMVVM架构一个角色,看不见摸不着只是一种思想。...ViewModelonClear方法,可以方法做一些释放资源操作,进一步降低内存泄露风险 4....5.1 什么是MVVM MVVM其实是前端领域一个专注于界面开发架构模式,总共分为View、ViewModel、Repository三个模块 (需严格按照单一设计原则划分) View(视图层): 专门做视图渲染以及...UI逻辑处理 Repository(远程): 代表远程仓库,Repository取需要数据 ViewModel: Repository取出数据需暂存到ViewModel,同时将数据映射到视图

81500

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

相提并论,其实这二者根本没有同一个层次,MVVM ViewModelMVVM架构一个角色,看不见摸不着只是一种思想。...而Jetpack ViewModel是一个实实在在框架用于做状态托管,有对应作用域可跟随Activity/Fragment生命周期,但这种特性恰好可以充当MVVM ViewModel角色,分隔数据层和视图层并做数据托管...ViewModelonClear方法,可以方法做一些释放资源操作,进一步降低内存泄露风险 4....5.1 什么是MVVM MVVM其实是前端领域一个专注于界面开发架构模式,总共分为View、ViewModel、Repository三个模块 (需严格按照单一设计原则划分) View(视图层): 专门做视图渲染以及...UI逻辑处理 Repository(远程): 代表远程仓库,Repository取需要数据 ViewModel: Repository取出数据需暂存到ViewModel,同时将数据映射到视图

1.9K80

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

,其实这二者根本没有同一个层次,MVVM ViewModelMVVM架构一个角色,看不见摸不着只是一种思想。...想要使两个Fragment播放信息实时同步,最优雅方式是将播放状态托管Activity作用域下ViewModelLiveData,然后各自做状态监听,这样只有要有一方改变就能立即通知到另一方,...ViewModelonClear方法,可以方法做一些释放资源操作,进一步降低内存泄露风险 解除你对DataBinding误解 使用DataBinding作用有哪些?...什么是MVVM MVVM其实是前端领域一个专注于界面开发架构模式,总共分为View、ViewModel、Repository三个模块 (需严格按照单一设计原则划分) View(视图层): 专门做视图渲染以及...UI逻辑处理 Repository(远程): 代表远程仓库,Repository取需要数据 ViewModel: Repository取出数据需暂存到ViewModel,同时将数据映射到视图

99631

如何构建Android MVVM应用程序

MVVM模式ViewModel和View是用绑定关系来实现,所以有了DataBinding 使我们构建Android MVVM 应用程序成为可能。   ...更是很少有博文来告诉你Android 如何通过Data Binding 去构建MVVM 应用框架。这也就是是本篇文章重点。...Android开发MVP设计思想用得比较多,利用MVP设计模型可以把部分逻辑代码Fragment和Activity业务逻辑移出来,Presenter持有View(Activity或者...Fragment)引用,然后Presenter调用View暴露接口对视图进行操作,这样有利于把视图操作和业务逻辑分开来。...但是这个模式还是存在一些不好地方,比较如说: Activity需要实现各种跟UI相关接口,同时要在Activity编写大量事件,然后事件处理调用presenter业务处理方法,View和Presenter

1.2K10
领券