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

【译】LiveData三连

When and why to use Android LiveData 差不多一年前(2017年5月的第一个alpha版本),谷歌发布了 "安卓架构组件",这是一个库的集合,旨在帮助安卓开发人员设计更强大...一般来说,这种方法要求你了解监听器(UI组件)的生命周期,并在你的代码中考虑到它。对于像Kotlin这样函数是一等公民的语言来说也是如此。...#4 — Using LiveData 在探索了现有的方案来完成这个任务之后,让我们看看Android架构组件的LiveData是如何解决的。...此外,LiveData还得到了新的SQLite持久化库Room的支持,该库是作为Android架构组件的一部分推出的。...这篇文章的灵感来自于18年安卓开发峰会上的一个演讲,我觉得这个演讲很新颖,很有趣。 1. You have backpressure in your app.

1.7K20

Jetpack--LifeCycle、ViewModel、LiveData

Jetpack是google官方的安卓开发工具集,目的是为了标准化和加快开发效率,并且之后会持续更新 安卓开发中,google推荐使用MVVM架构,Jetpack集成了构建MVVM架构的几种工具,相比于以前的...可以说你的安卓项目没有升级使用这套架构,那么你的架构就已经过时了 JetPack与AndroidX AndroidX命名空间中包含Jetpack库 AndroidX代替Android Support Library...AAC(Android Architect Component)中的组件并入AndroidX 其他一些需要频繁更新和迭代的特性也并入AndroidX 一、LifeCycle LifeCycle会自动绑定组件的生命周期...,省去了我们以前在onResume,onPause等方法中的操作 1.LifeCycle解耦页面与组件 我们有一个Activity,布局文件如下: <?...使用,ViewModel的生命周期是独立于Activity的 三、LiveData LiveData对象提供了可观测方法,当数据发送改变时,观测方能够观测到,并且线程安全,集成了LifeCycle的绑定生命周期特性

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

    LiveData 还有学习的必要吗?—— Jetpack 系列(2)

    前言 LiveData 是 Jetpack 组件中较常用的组件之一,曾经也是实现 MVVM 模式的标准组件之一,不过目前 Google 更多推荐使用 Kotlin Flow 来代替 LiveData;...---- 这篇文章是 Jetpack 系列文章第 2 篇,专栏文章列表: 一、架构组件: 1、Lifecycle:生命周期感知型组件的基础 2、LiveData:生命周期感知型数据容器(本文)[2] 3...---- 参考资料 LiveData 概览[12] —— 官方文档 重学安卓:吃透 LiveData 本质,享用可靠消息鉴权机制[13] —— KunMinX 著 重学安卓:LiveData 数据倒灌...[12] LiveData 概览: https://developer.android.google.cn/topic/libraries/architecture/livedata [13] 重学安卓...:吃透 LiveData 本质,享用可靠消息鉴权机制: https://xiaozhuanlan.com/topic/6017825943 [14] 重学安卓:LiveData 数据倒灌 “背景缘由全貌

    3.6K10

    构建现代应用:Java中的热门架构概览

    安卓开发架构 对于移动应用程序开发,Java在安卓平台上是一种重要的编程语言。...安卓开发通常使用MVC(Model-View-Controller)或MVVM(Model-View-ViewModel)等架构模式。 什么是安卓开发架构?...安卓开发架构是一种设计应用程序的方法,专门用于创建在Android操作系统上运行的移动应用程序。它强调了应用的可维护性、可测试性和可扩展性。...安卓开发架构的关键概念 模型(Model):模型表示应用程序的数据和业务逻辑。它独立于用户界面,并负责处理数据的获取和处理。 视图(View):视图是用户界面的表示。...安卓开发架构案例 考虑一个社交媒体应用程序。用户可以查看和发布帖子,以及与其他用户互动。为了实现这个应用程序,可以使用MVVM架构。

    1.6K21

    实时音视频开发学习10 - 小程序端一

    要求 注册腾讯云账号并完成实名认证。微信 App iOS 最低版本要求:7.0.9微信 App Android 最低版本要求:7.0.8小程序基础库最低版本要求:2.10.0。...针对符合类目要求的小程序,可以在微信公众平台—开发—接口设置中自助开通组件权限。...编译时,点击语音聊天室,输入对应的房间号和用户ID,然后点击进入房间发现进入失败。...在报错的同时也提醒你要使用相关平台版本的系统,如安卓需要7.0.8。 解决方法便是在真机上进行验证。..."custom":自定义,需要您通过 setViewRect 和 setViewZIndex 等接口自行处理或者修改组件的 custom 模版。 roomID房间号是数字类型,您可以自定义指定。

    1.3K21

    安卓软件开发:Jetpack Compose Material3结合 MVVM 架构的模块化架构设计和实践

    无论你是新手开发者,还是有经验的安卓开发人员,相信这篇文章都会对你有所帮助。 一、为什么需要模块化架构? 模块化设计的好处是: 可扩展性:各模块独立开发,彼此依赖最小化,方便新功能的添加和扩展。...二、模块化架构 几个模块划分: UI 层:负责界面的渲染和用户交互的逻辑。 数据层:处理数据的获取、存储及管理,和数据库和 API 交互。...业务逻辑层 (ViewModel):连接 UI 和数据层,处理应用的业务逻辑和状态管理。 文章会用 MVVM 架构的方式来讲解。...七、总结 本文章讲解了清晰理解数据层、业务逻辑层和 UI 层分离。这种架构提高了开发效率,还方便了日后功能的扩展和维护。 7.1数据层 负责处理所有和数据相关的操作,如网络请求、数据库操作等。...7.3 UI 层 负责页面的渲染和用户交互,用 Compose 和 Material3 提供的组件构建美观 UI。 在开发时,把东西分开来做,能让应用更容易维护和升级,这种模块化的方法很不错。

    53960

    MVVM归纳总结

    主要使用LiveData,ViewModel,DataBinding打造MVVM框架,其他组件是附加的功能。...1、LifeCycle:主要是让自定义类继承它,通过在四大主件和application中绑定后,通过在LifeCycle它的子类中对自定义的方法加上生命周期注解后,实现对它父组件的生命周期进行监听。...避免父组件destory销毁后,还无法释放内存,造成内存泄露。 2、LiveData:主要用于给数据套壳包裹,使数据带有观察者模式特性。当数据变化时,会回调的到该数据的监听方法中。...LiveData一般就是与ViewModel结合,对ViewModel里面的数据套壳,对数据监听。还会与Room新数据库组件搭配使用,监听数据库数据变化。... getUserinfoById(String id); } 妥妥的很安卓

    1K20

    开发以太坊安卓钱包系列3 - 资产信息展示

    这是如何开发以太坊(安卓)钱包系列第3篇, 钱包账号资产信息展示,展示信息主要包括账号地址、eth余额及该账号所拥有的Token及余额。...后来Google 推荐多个架构模式: MPV、 MVVM模式来解决数据和UI耦合的问题,登链钱包代码[1],使用的就是MVVM模式,所以对它做一个简单介绍,下面是MVVM的视图和数据的交互图: ?...我们使用了Google在I/O大会推出的一套遵循MVVM开发模式的LiveData和ViewModel组件架构。...ViewModel 和 LiveData ViewModel 会关注UI生命周期来存储和管理数据,在Activity发生变化(锁屏开屏、旋转)时,ViewModel 会自动保留之前的数据并给新的Activity...LiveData会将观察者视为活动状态,并通知其数据的变化。LiveData未注册的观察对象以及非活动观察者是不会收到有关更新的通知。

    1.3K30

    直播中台iLiveSDK终端框架演变之路

    终端SDK的定位是什么? 直播中台会提供一整套直播能力,包括:登录、开播、观看、房间内互动、对公管理、管理平台、商业化等。后台会提供一套完善的PASS服务。...针对上述复杂的业务接入模式,和各种业务不同的接入定制需求,对整个终端SDK框架设计是个非常大的挑战。 这要求我们在功能完善的前提下,整个框架足够健全,足够灵活,足够开放。...还有一个问题: 如果某个组件是对安全性要求较高的,它的部分功能可能是不希望随便对其他部分可见的,这个时候显然下沉不是一个好的选择。...UI组件和服务组件,由胶水逻辑串接了2个组件,这里单模块内其实是个MVP的架构,组装层相当于presenter 35.png 这里面临几个问题: 1、胶水和业务逻辑交杂在一起,module内逻辑有变动时...36.png 我们先来看下我们的诉求是什么?以及现状和问题是什么?

    3.8K6457

    安卓软件开发:理解Room数据库和上手

    在安卓开发中,Room数据库是Jetpack架构组件中的重要持久化库,简化了开发者对SQLite数据库的操作,提供了一种干净、安全和高效的方式进行本地数据存储。...• 与LiveData/Flow集成:可以方便观察数据库数据的变化,实时更新UI。 • 支持SQLite:和SQLite数据库完全兼容,数据存储方式相同。2....Room的三个核心组件Room框架有三个主要的核心组件,每一个组件都代表了操作数据库时的不同层次。2.1. 实体(Entity)实体是Room数据库中的表结构,每个实体类都映射到数据库中的一张表。...总结Room数据库是安卓开发中的一项重要工具,简化了数据库操作提供了强大的类型安全性和数据持久化能力。...通过Entity、DAO和RoomDatabase三大核心组件,开发者可以快速、安全地实现数据库存储功能。结合协程、LiveData或Flow,Room轻松实现数据的实时更新和异步操作。

    45330

    如何正确的在 Android 上使用协程 ?

    如今两年时间过去了,站在一名 Android 开发者的角度来看,Kotlin 的生态环境越来越好了,相关的开源项目和学习资料也日渐丰富,身边愿意去使用或者试用 Kotlin 的朋友也变多了。...今年的 Google IO 也放出了 Kotlin First 的口号,许多新的 API 和功能特性将优先提供 Kotlin 支持。所以,时至今日,实在找不到安卓开发者不学 Kotlin 的理由了。...既然不建议直接使用 GlobalScope,我们就先试验一下使用它会是什么效果。...GlobalScope 创建的协程没有父协程,GlobalScope 通常也不与任何生命周期组件绑定。除非手动管理,否则很难满足我们实际开发中的需求。所以,GlobalScope 能不用就尽量不用。...ViewModelScope 如果你使用了 MVVM 架构,根本就不会在 Activity 上书写任何逻辑代码,更别说启动协程了。这个时候大部分工作就要交给 ViewModel 了。

    2.8K30

    美团技术报告:83%的Android开发者因这5个源码盲区错失年薪50万(附50k+面试答案)

    大家好,我是稳稳,一个曾经励志用技术改变世界,现在为随时失业做准备的中年奶爸程序员,与你分享生活和学习的点滴。 今天温度直上30度,明天却最低不到10度,像极了这人生跌宕起伏啊!...一、年薪50万的技术鸿沟:源码级认知差异 真实案例:某候选人在美团L8面试中,被要求解释"ViewModel为何能跨屏幕旋转保存数据",仅回答"通过onSaveInstanceState实现",面试官当场摇头...薪资对照表: 薪资段位 能力边界 典型问题 20k以下 会用Jetpack组件 "LiveData和RxJava区别?" 30k+ 设计组件整合架构 "如何避免粘性事件?"...三、自测你的Jetpack认知深度 Level 1(20k以下):能说出ViewModel的基本用法 Level 2(30k+):能设计组件整合架构(如LiveData+Room) Level 3(50k...年的Android战场,Jetpack源码原理已成为区分"码农"与"架构师"的核心标尺。

    8510

    为前端工程师写的安卓入门知识

    跨端开发一直都是火热的话题,作为前端开发者,了解一下终端的知识也是有好处的这篇先简单介绍一些安卓一些常用的基础知识和概念。...这里不是因为取名偷懒了,这做是为了适配不同的平台和尺寸。 举个例子,v21指的是安卓系统版本21对应的就是安卓5.0。在这个目录下可以使用5.0的新方法,对5.0及以后的版本的机型有效。...比如我们的app里房间和首页因为比较复杂抽成了单独module,基础组件webview、下载、csc等复用组件也都单独抽成module。然后被其他的module引用。引用的形式和上面引入外部库类似。...targetSdkVersion 29 versionCode 1 versionName "1.0" } 同时构建不同类型的apk,常见的比如,因为安卓机型有不同的架构...四、四大组件 安卓有四大组件,分别是:Activity、Service、Broadcast、ContentProvider。这四个是安卓系统中非常重要的四个组成部分。

    1.4K30

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

    点击上方胡飞洋可以关注哦~ 前面四篇介绍了Jetpack 架构组件中的 基础组件 以及它们的综合应用:Jetpack MVVM 架构模式,到这里已经基本满足标准化开发了。...但 Jetpack 架构组件 除了 Lifecycle、LivaData、ViewModel,还有: WorkManager,用于管理后台工作的任务,即使应用退出或重启时。...四、Jetpack MVVM 补充说明 讲完DataBinding,所有的 Jetpack 架构组件 的重点内容 就全部讲完了。...可见DataBinding 在 Jetpack MVVM 架构中 还是 有很大优势的。 最后补充说明得了 Jetpack MVVM 架构 的使用注意事项和原则,在实际项目使用中 应该会很有体会。...https://juejin.cn/post/6844903509893054471 《重学安卓:从 被误解 到 真香 的 Jetpack DataBinding!》

    1.5K10

    7. JetpackNote---基于Jetpack的学习笔记APP

    如果你对Jetpack组件有了解或者想对源码有更深入的了解,请看我之前的几篇文章: 1. Jetpack源码解析—看完你就知道Navigation是什么了? 2....JetpackNote是什么?...Jetpack是什么想必大家对它都已经有了基本的了解了,官方介绍以及官方文档: https://developer.android.com/jetpack Jetpack 是一套库、工具和指南,可帮助开发者更轻松地编写优质应用...想尝试一种新的架构方式,从我开始工作到现在,经历过了最初的MVC、MVP[MVP-todo、The-MVP…]以及各式各样的MVP]、MVVM、Clean等,当然我并没有所有的架构都用到过,每个项目基于自己的项目特点以及需求的迭代都会出现一套基于开发者所设计的架构模式...但是Jetpack,它是一套组件、工具和指导;是谷歌正式推出的一整套用来构建APP开发的组件。 ?

    1K30

    Android开发环境概述

    前两期分别总结了Android的前世今生和Android的系统架构和应用组件,那么从本期开始分多次总结分享Android的开发环境搭建,为后续Android开发的学习做好准备工作。...而AVD Manager是一个Android虚拟驱动管理器,主要用来创建安卓模拟器(即手机模拟器)。当然,安卓模拟器所需的镜像(可以理解成模拟器的操作系统)是通过SDK Manager来下载的。...04模拟器/真机 在Android学习和开发过程中,我们常用到安卓自带的Android SDK模拟器和第三方Genymotion安卓模拟器,当然最好的选择是直接用真机。...缺点:一般手头不会有各种安卓版本各种屏幕大小的手机,局限于特定版本特定屏幕下。...教学视频大都也是用exlipse,因为那些视频发布时,AS还没成为主流 2.免费 支持项目:JavaSE、JavaEE、Android 推荐人群:完全零基础的Java和安卓学习者

    2.1K50

    改造 Android 官方架构组件 ViewModel

    Android 官方架构组件中的核心组件, 它可以使各种实例作为观察者与 Activity 和 Fragment 等具有生命周期特性的组件绑定在一起, LiveData 和 ViewModel 都是基于此组件..., 那么第二种类型的优点是什么呢?...MVP 架构很轻易的具有绑定生命周期的优势, 现在第一种类型的 MVP 架构将如虎添翼 经过以上的分析, 我认为生命周期组件对于我的框架来说是很有必要的, 这将使日常开发更加便捷 LiveData LiveData..., 或 Rxjava 加上生命周期组件, 也可以轻易做到根据生命周期停止和恢复之前的事件, 在配上 Rxjava 强大的操作符, LiveData 能做的事 RxJava 都能做, LiveData 不能做的事...就这样实现了 如何改造 想要知道如何改造, 那我们就要明确这次改造的最终目的是什么, 我们的目的就是要让 ViewModel 组件 能用于 Presenter, 乃至其他更多的模块, 不止是用于 ViewModel

    77310

    ViewModels and LiveData- Patterns + AntiPatterns

    ✅将Activity和Fragment中的逻辑保持在最低限度 View references in ViewModels 视图模型与Activity或Fragment有不同的作用域。...这将导致一个非常可测试和可维护的架构。它也有利于快速离开主线程。在Architecture Blueprints中有一个Clean Architecture的例子。...当LiveData观察开始时,该Activity立即收到旧的值,这导致消息再次显示出来。 与其试图用库或架构组件的扩展来解决这个问题,不如将其作为一个设计问题来面对。...LiveData是这个结构的关键组件,所以通常你的Activity和Fragment会观察LiveData实例。 ViewModels如何与其他组件通信由你决定,但要注意泄漏和边缘情况。...使用LiveData在存储库和ViewModel之间进行通信,其方式类似于在View和ViewModel之间使用LiveData。 这点用Flow也可以解决。

    1.1K30

    安卓软件开发:对比 MVVM 和 MVI 架构的模块设计

    MVI(Model-View-Intent)和 MVVM(Model-View-ViewModel) 是安卓开发中很常见的两种架构。...一、架构设计区别MVI(Model-View-Intent)MVI 是一种单向数据流的架构,它通过严格的事件驱动和状态管理保证应用的状态是可预测的。...MVVM(Model-View-ViewModel)MVVM 是一种很常见的安卓架构,它通过双向数据绑定实现 View 和 ViewModel 的互动。...通过 LiveData 和 ViewModel 之间的关系,可以容易管理不同视图之间共享的数据。这种架构使 View 和 ViewModel 之间的逻辑分工很明确,利于代码复用。...选择架构的关键在于项目的复杂度和团队对架构的熟悉程度。MVI 更适合需要精确控制的复杂应用,而 MVVM 则适合相对简单、开发效率优先的场景。有任何问题欢迎提问,感谢大家阅读 )

    81260
    领券