首页
学习
活动
专区
工具
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/)了解更多关于腾讯云的产品和服务信息。

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

相关·内容

MVVM+数据绑定,让你的Android应用飞起来,MVVM+数据绑定技巧,打造Android应用的数据流水线!

ViewModel(视图模型) 定义:ViewModel层连接Model和View,作为它们之间的桥梁。它负责从Model中获取数据,并将数据转换为View层可以直接使用的形式。...View层通过调用ViewModel的LiveData对象的observe()方法,注册一个Observer来监听数据变化。...当LiveData中的数据发生变化时,Observer的onChanged()方法会被调用,从而触发UI的更新。 6....为了确保应用的流畅运行和优质用户体验,以下是一些建议的性能调优策略和方法: 1、减少不必要的视图更新:在MVVM模式中,数据绑定机制会自动更新与数据相关的视图。然而,过度的视图更新可能导致性能下降。...2、优化数据绑定表达式:在MVVM模式中,数据绑定通常通过表达式来实现。然而,复杂的表达式可能导致性能下降。因此,建议简化数据绑定表达式,避免在表达式中进行复杂的计算或调用耗时的方法。

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

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

    2.1K20

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

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

    1.5K10

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

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

    1.8K20

    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.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

    2.1K20

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

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

    1.3K20

    MVI 架构

    ,其架构图如下所示: 图片 MVC架构主要分为以下几部分: 视图层(View):对应于xml布局文件和java代码动态view部分 控制层(Controller):主要负责业务逻辑,在android中由...所以在android中mvc更像是这种形式: 图片 因此MVC架构在android平台上的主要存在以下问题: Activity同时负责View与Controller层的工作,违背了单一职责原则 Model...图片 View观察ViewModel的数据变化并自我更新,这其实是单一数据源而不是双向数据绑定,所以其实MVVM的这一大特性我其实并没有用到 View通过调用ViewModel提供的方法来与ViewModel...这其实就是我通过MVVM架构写比较复杂页面时最难受的点。其次就是View层通过调用ViewModel层的方法来交互的,View层与ViewModel的交互比较分散,不成体系。...ViewState供View订阅,ViewState是个data class,包含所有页面状态 View层通过Action更新ViewState,替代MVVM通过调用ViewModel方法交互的方式

    5410

    MVVM 架构模式:解耦、可测试与高效

    在现代的前端开发中,MVVM(Model-View-ViewModel)已成为非常流行的设计模式,尤其是在单页面应用(SPA)开发中。它通过解耦视图和业务逻辑,提升了代码的可维护性和扩展性。...MVVM 是一种软件架构模式,主要由 Model(模型)、View(视图) 和 ViewModel(视图模型) 三部分组成。 Model:模型层,负责管理应用的业务逻辑和数据。...在 MVVM 中,数据绑定是一个核心机制,它可以让 View 与 ViewModel 同步更新,而无需手动编写繁琐的代码。...可测试性:由于 ViewModel 中不依赖于 View,所以测试业务逻辑变得更容易。可以通过单元测试来验证逻辑的正确性,而不需要启动 UI 环境。...移动端开发 在移动端,像 Android 的 DataBinding 和 Jetpack Compose 都使用了类似于 MVVM 的模式。通过这种模式,可以大大减少 UI 与业务逻辑之间的耦合度。

    58010

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

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

    1K30

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

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

    2.8K82

    项目架构三问—腾讯真题

    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 事件。

    54210

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

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

    2.2K70

    用代码手把手教你使用MVVM

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

    2K20

    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.2K20

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

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

    1.9K80

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

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

    84300
    领券