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

Android从零开始搭建MVVM架构(4)——LiveData

LiveData 介绍 Livedata 是 Google 推荐的 Android 架构组件之一,是一个存放可被观察的数据持有类,有生命周期感知功能,解决了android开发者需要去手动处理生命周期的痛点...您通常在UI控制器(如Activity或Fragment)中创建Observer对象。 3.使用observe()方法将Observer对象注册到LiveData对象。...创建LiveData对象 LiveData是一个包装器,可用于任何数据,包括实现Collections的对象,如List。...注意:必须要从主线程调用setValue(T) 方法来更新LiveData 对象. 如果代码在工作线程中执行, 你可以使用postValue(T) 方法来更新LiveData对象....Transformations.map() 使用一个函数来转换存储在LiveData对象中的值,并向下传递转换后的值。

2.4K30

【Jetpack】LiveData 架构组件 ( LiveData 简介 | LiveData 使用方法 | ViewModel + LiveData 示例 )

一、LiveData 简介 ---- 在 视图 View 与 数据模型 Model 通过 ViewModel 架构组件 进行绑定后 , 可以立即 将 ViewModel 中的数据设置到 UI 界面中...这里引入 LiveData 架构组件 , 在 ViewModel 中 , 可以 通过 LiveData 将数据修改的信息发送给 视图 View , 通知 UI 界面进行修改 ; 场景举例 : 在 ViewModel...视图 View ; 二、LiveData 使用方法 ---- 首先 , 在 ViewModel 视图模型 中定义 LiveData 数据 , 如 MutableLiveData , class MyViewModel...; 使用 传统的开发方式 , 可以使用 线程通信 , Handler 或者 广播 等形式 , 在子线程中通知主线程更新 UI ; 使用 LiveData 后 , 将数据定义在 LiveData 中 ,...+ LiveData 代码 自定义 ViewModel 子类继承 ViewModel , 在 ViewModel 中 , 定义 LiveData 类型的数据 , 此处选择使用 MutableLiveData

1.3K20
  • 您找到你想要的搜索结果了吗?
    是的
    没有找到

    【译】LiveData-Flow在MVVM中的最佳实践

    1 原文链接:https://proandroiddev.com/using-livedata-flow-in-mvvm-part-i-a98fe06077a0 最近,我一直在寻找MVVM架构中Kotlin...在我回答了这个关于LiveData和Flow的问题后,我决定写这篇文章。在这篇文章中,我将解释如何在MVVM模式中使用Flow与LiveData。...尽管Flow的用法似乎与LiveData非常相似,但它有更多的优势,比如: 本身是异步的,具有结构化的并发性 用map、filter等操作符简单地转换数据 易于测试 如何在MVVM中使用Flow 如果你的应用程序有...-252ec15cc93a 在第一部分中,我们已经看到了如何在资源库层中使用Flow,以及如何用Flow和LiveData改变应用程序的主题。...在这篇文章中,我们将看到如何移除LiveData(甚至是MediatorLiveData),在所有层中只使用Flow。我们还将深入研究常见的Flow操作,如map、filter、transform等。

    2.8K40

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

    Kotlin Flow 如何在 MVVM 中使用? Kotlin Flow 如何与 Retrofit2 + Room 混合使用?...Google 推荐在 MVVM 中 使用 Kotlin Flow Google 推荐在 MVVM 中使用 Kotlin Flow我相信如今几乎所有的 Android 开发者至少都听过 MVVM 架构,在...,这几篇文章大概的内容是说如何在 MVVM 中使用 Flow 以及如何与 LiveData 一起使用,当我看完并通过实践之后大概明白了,LiveData 是一个生命周期感知组件,它并不属于 Repositories...map 等等 Flow 是对 Kotlin 协程的扩展,让我们可以像运行同步代码一样运行异步代码,使得代码更加简洁,提高了代码的可读性 易于做单元测试 Kotlin Flow 如何在 MVVM 中使用...Jetpack 的视图模型 MVVM 架构由 View + DataBinding + ViewModel + Model 组成,如下所示,我相信下面这张图大家非常熟悉了, ?

    4.4K21

    Kotlin开发框架建议入门实践

    本文将深入探讨Kotlin开发框架的核心优势,包括其与Jetpack组件的完美结合、MVVM架构的实现,以及Kotlin在网络请求和跨平台开发中的应用。...LiveData与ViewModel在Kotlin与Jetpack的结合中,LiveData和ViewModel是两个非常重要的组件。...以下是一个简单的示例,展示了如何在Kotlin中使用LiveData和ViewModel:class MyViewModel : ViewModel() { private val _data =...> = userDao.getAll()}二、MVVM架构的实现MVVM(Model-View-ViewModel)是一种设计模式,主要用于分离用户界面的展示逻辑(View)和业务逻辑...通过与Jetpack组件的完美结合、MVVM架构的实现以及网络请求和跨平台开发的应用,Kotlin不仅提高了开发效率和质量,还降低了维护成本和复杂性。

    25220

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

    单向数据绑定 单向数据绑定是指数据从数据源(如ViewModel中的LiveData对象)流向UI组件(如TextView、EditText等),但UI组件的更改不会直接影响数据源。...优化策略: 在支持双向绑定的UI框架(如Jetpack Compose)中,使用内置的双向绑定机制。...使用模块化技术(如Android的模块化架构或Kotlin的KMP)来进一步分离关注点,并将代码组织为可重用的模块。...然而,在MVVM模式中,推荐使用LiveData或Flow作为主要的数据同步机制,因为它们与ViewModel和Android生命周期的集成更为紧密。...为了解决这个问题,我们利用了Android架构组件中的LiveData和MutableLiveData。

    13310

    MVI 架构

    / 前言 / Android开发发展到今天已经相当成熟了,各种架构大家也都耳熟能详,如MVC,MVP,MVVM等,其中MVVM更是被官方推荐,成为Android开发中的显学。...不过软件开发中没有银弹,MVVM架构也不是尽善尽美的,在使用过程中也会有一些不太方便之处,而MVI可以很好的解决一部分MVVM的痛点。...要了解MVI架构,我们首先来了解下MVVM架构有什么不足,相信使用MVVM架构的同学都有如下经验,为了保证数据流的单向流动,LiveData向外暴露时需要转化成immutable的,这需要添加不少模板代码并且容易遗忘...小结一下,在我的使用中,MVVM架构主要有以下不足: 为保证对外暴露的LiveData是不可变的,需要添加不少模板代码并且容易遗忘 View层与ViewModel层的交互比较分散零乱,不成体系 MVI...但通过以上的分析与介绍,我相信使用MVI架构代替没有使用DataBinding的MVVM是一个比较好的选择~

    5410

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

    前言 -- Android开发发展到今天已经相当成熟了,各种架构大家也都耳熟能详,如MVC,MVP,MVVM等,其中MVVM更是被官方推荐,成为Android开发中的显学。...不过软件开发中没有银弹,MVVM架构也不是尽善尽美的,在使用过程中也会有一些不太方便之处,而MVI可以很好的解决一部分MVVM的痛点。...要了解MVI架构,我们首先来了解下MVVM架构有什么不足 相信使用MVVM架构的同学都有如下经验,为了保证数据流的单向流动,LiveData向外暴露时需要转化成immutable的,这需要添加不少模板代码并且容易遗忘...其次就是View层通过调用ViewModel层的方法来交互的,View层与ViewModel的交互比较分散,不成体系 小结一下,在我的使用中,MVVM架构主要有以下不足 为保证对外暴露的LiveData...与MVI架构,目前MVVM是官方推荐的架构,但仍然有以下几个痛点 MVVM与MVP的主要区别在于双向数据绑定,但由于很多人(比如我)并不喜欢使用DataBindg,其实并没有使用MVVM双向绑定的特性,

    2.1K20

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

    这篇,就来探索下目前android开发中 最优秀、讨论最多的架构模式—— MVVM 。 几个月前,我所在项目完成了 MVVM 的架构改造。这篇在开始写之前,我也阅读了大量MVVM文章。...正常的开发流程中,开始写代码之前 都会有架构设计这一过程。这就需要你选择使用何种架构模式了。...MVVM MVVM在Android开发中是如何实现的呢?接着看~ 到这里你会发现,所谓的架构模式本质上理解很简单。...LiveData 组件还遵循应用组件(如 Activity、Fragment 和 Service)的生命周期状态,并包括清理逻辑以防止对象泄漏和过多的内存消耗。...四、总结 本篇介绍了 架构模式的含义,回顾和比较了Android中的架构模式MVC、MVP、MVVM,最好在 Jetpack架构组件 基础上 介绍了 MVVM 的详细实现方法、注意点,以及MVP的改造。

    2.1K20

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

    解除你对DataBinding的误解 4.1 使用DataBinding的好处有哪些? 4.2 为什么很多人说DataBinding很难调试? 5. Jetpack和MVVM有什么关系?...答案显而易见,无非是想让数据使用者感知到而已,而LiveData可以优雅的实现这一流程,将 改变、通知 两步操作合并为一步 即省事也提高了安全性....相提并论,其实这二者根本没有在同一个层次,MVVM ViewModel是MVVM架构中的一个角色,看不见摸不着只是一种思想。...并不是我同意xml中写业务逻辑这一观点,我觉得碰到问题就得去解决问题,如果解决问题的路上有障碍就尽量扫清障碍,而不是一味的逃避。 如{vm.isShow ?...提高 开发效率以及项目稳定性的架构就是好架构. 5.2 Jetpack只是让MVVM更简单、更安全 Jetpack是Android官方为确立标准化开发而提供的一套框架,Lifecycle可以让开发者不用过多考虑

    84300

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

    答案显而易见,无非是想让数据使用者感知到而已,而LiveData可以优雅的实现这一流程,将 改变、通知 两步操作合并为一步 即省事也提高了安全性....,其实这二者根本没有在同一个层次,MVVM ViewModel是MVVM架构中的一个角色,看不见摸不着只是一种思想。...并不是我同意xml中写业务逻辑这一观点,我觉得碰到问题就得去解决问题,如果解决问题的路上有障碍就尽量扫清障碍,而不是一味的逃避。 如{vm.isShow ?...什么是MVVM MVVM其实是前端领域一个专注于界面开发的架构模式,总共分为View、ViewModel、Repository三个模块 (需严格按照单一设计原则划分) View(视图层): 专门做视图渲染以及...MVVM就这么些东西,千万不要把它理解的特别复杂 其实我上篇文章也简单说过,好的架构不应该局限到某一种模式(MVC/MVP/MVVM)上,需要根据自己项目的实际情况不断添砖加瓦。

    1K31

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

    答案显而易见,无非是想让数据使用者感知到而已,而LiveData可以优雅的实现这一流程,将 改变、通知 两步操作合并为一步 即省事也提高了安全性....相提并论,其实这二者根本没有在同一个层次,MVVM ViewModel是MVVM架构中的一个角色,看不见摸不着只是一种思想。...并不是我同意xml中写业务逻辑这一观点,我觉得碰到问题就得去解决问题,如果解决问题的路上有障碍就尽量扫清障碍,而不是一味的逃避。 如{vm.isShow ?...不管是双向绑定还是单向驱动,只要能保证数据、UI一致,那它就符合MVVM思想 其实我上篇文章也简单说过,好的架构不应该局限到某一种模式(MVC/MVP/MVVM)上,需要根据自己项目的实际情况不断添砖加瓦...提高 开发效率以及项目稳定性的架构就是好架构. 5.2 Jetpack只是让MVVM更简单、更安全 Jetpack是Android官方为确立标准化开发而提供的一套框架,Lifecycle可以让开发者不用过多考虑

    1.9K80

    Android UI 架构演进:从 MVC 到 MVP、MVVM、MVI

    View 的概念相同; Model: 负责管理业务数据逻辑,如网络请求、数据库处理,与 MVP 中 Model 的概念相同; ViewModel: 存储视图状态,负责处理表现逻辑,并将数据设置给可观察数据容器...DataBinding、ViewModel 和 LiveData 等组件是 Google 为了帮助我们实现 MVVM 模式提供的架构组件,它们并不是 MVVM 的本质,只是实现上的工具。...当然,实践中应该根据状态之间的关联程度来决定数据流的个数,不应该为了使用 MVI 模式而强行将多个无关的状态压缩在同一个数据流中。...实践中应该根据状态之间的关联程度来决定使用单流还是多流; 内存开销: ViewState 是不可变类,状态变更时需要创建新的对象,存在一定内存开销; 局部刷新: View 根据 ViewState 响应...进阶版:MVI 架构了解一下~ —— 程序员江同学 著 https://juejin.cn/post/7022624191723601928 MVI 架构更佳实践:支持 LiveData 属性监听 ——

    1.5K10

    Android MVVM 架构应用实现

    以前项目中虽然也使用MVVM架构,但由于整体框架不是我自己搭建的,导致我对于MVVM架构的整体还是很不熟悉,所以这次就自己搭建并实现一次MVVM架构。...MVVM架构使用的组件有ViewModel、LiveData、ViewBinding/DataBinding等,这些组件都是Jetpack库中的组件。...MVVM架构示意图,以及相关组件在其中的作用。...[MVVM架构图] 了解了MVVM的基本架构和其中各个组件的作用,可以开始代码实现了。我做这个项目的初衷是因为最近在整理收集Android常用的开源库,为了更方便的展示所实现的一个应用。...架构的应用搭建完成,第一次独立的搭建MVVM架构之后,对于MVVM架构的理解加深了不少,对于JetPack库中的组件和其它开源库也有了新的认识,此外MVVM架构还经常和Retrofit、RxJava等开源库配合使用

    1.3K20

    项目架构三问—腾讯真题

    今天就来谈谈吧: 介绍一下你们项目的架构 MVP,MVVM,MVC 区别 说说你理解的MVVM 介绍一下你们之前做的项目的架构 这个问题大家就真实回答就好,重点是要说完后提出对自己项目架构的认同或不认同的观点...MVVM 架构介绍 MVVM的特点就是双向绑定,并且有Google官方加持,更新了Jetpack中很多架构组件,比如ViewModel,Livedata,DataBinding等等,所以这个是现在的主流框架和官方推崇的框架...MVP层中,Presenter还是会持有View的引用,但是在MVVM中,View和Model进行双向绑定,从而使viewModel基本只需要处理业务逻辑,无需关系界面相关的元素了。...MVVM架构组件中有一个组件是LiveData,它具有生命周期感知能力,可以感知到Activity等的生命周期,所以就可以在其关联的生命周期遭到销毁后自行清理,就大大减少了内存泄漏问题。...在MVVM中使用了LiveData,那么在需要更新View的时候,如果观察者的生命周期处于非活跃状态(如返回栈中的 Activity),则它不会接收任何 LiveData 事件。

    54210

    解决Android开发中的痛点问题用Kotlin Flow

    基于LiveData+ViewModel的MVVM架构在某些场景下(以横竖屏为典型)存在局限性,本文会顺势介绍适合Android开发的基于Flow/Channel的MVI架构。...背景 大力智能客户端团队在平板端大力一起学App上深度适配了横竖屏场景,将原先基于Rxjava的MVP架构重构成基于LiveData+ViewModel+Kotlin协程的MVVM架构。...项目由MVP过渡到MVVM时,其中一个典型的重构手段就是将Presenter中的回调写法改写成在ViewModel中持有LiveData由View层订阅,比如以下场景: 在大力自习室中,当老师切换至互动模式时...ViewModel和View层的通信只依赖LiveData足够吗? 在使用MVVM架构时,数据变化驱动UI更新。...结论 架构中对SharedFlow和channelFlow的使用绝对值得保留,就算不使用MVI架构,参考这里的实现也可以帮助解决很多开发中的难题,尤其是涉及横竖屏的问题。

    3.3K20

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

    点击上方胡飞洋可以关注哦~ 前面四篇介绍了Jetpack 架构组件中的 基础组件 以及它们的综合应用:Jetpack MVVM 架构模式,到这里已经基本满足标准化开发了。...而 我们 上一篇 中 MVVM 是使用 LiveData,实现数据驱动的,它包裹的 User 是没有继承BaseObservable的, 要继承嘛?不用!...DataBinding 结合 LiveData 使用步骤很简单: 要使用LiveData对象作为数据绑定来源,需要设置LifecycleOwner xml中 定义变量 ViewModel, 并使用 ViewModel...也就是说,在上一篇中介绍的 Jetpack MVVM 中,如果要使用 DataBinding 的话,也是很简单的。...可见DataBinding 在 Jetpack MVVM 架构中 还是 有很大优势的。 最后补充说明得了 Jetpack MVVM 架构 的使用注意事项和原则,在实际项目使用中 应该会很有体会。

    1.5K10

    从15k到40k:资深Android必须掌握的3种架构设计模式

    薪资逻辑: 15k开发者:能实现功能,但代码耦合度高(如Activity塞满网络请求+数据库操作) 40k开发者:用架构思维解耦业务,支撑高并发、低延迟场景(如直播间弹幕分流策略) 二、突破瓶颈的3...数据层:使用Kotlin Flow构建背压感知的消息管道,避免OOM 2. 业务层:通过StateFlow实现消息优先级分流(如礼物>弹幕>点赞) 3....参考答案: 使用:module-dependency-checker插件强制检测 在Domain层定义Repository接口,Data层实现 模式3:MVVM进阶版 —— 腾讯/快手性能优化核心...防内存泄漏:在ViewModel中使用CoroutineScope(SupervisorJob()) 高频面试题: “如何检测MVVM架构中的内存泄漏?”...造成泄漏 三、自测你的架构能力层级 Level 1(15k):能在Activity中完成功能开发 Level 2(25k):会使用MVVM+LiveData解耦业务 Level 3(40k+

    4410
    领券