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

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

Jetpack + MVVM 实战应用,和神奇宝贝(PokemonGo) 有很多不同之处,神奇宝贝(PokemonGo) 主要偏向于 Paging3 的分页处理,以及 Flow 在 MVVM 的实战...Kotlin Flow 如何在 MVVM使用? Kotlin Flow 如何与 Retrofit2 + Room 混合使用?...Google 推荐在 MVVM 使用 Kotlin Flow Google 推荐在 MVVM使用 Kotlin Flow我相信如今几乎所有的 Android 开发者至少都听过 MVVM 架构,在...,这几篇文章大概的内容是说如何在 MVVM使用 Flow 以及如何与 LiveData 一起使用,当我看完并通过实践之后大概明白了,LiveData 是一个生命周期感知组件,它并不属于 Repositories... 这是获取神奇宝贝的详细信息,通过 DataBinding 以声明方式将数据(神奇宝贝的体重)绑定到界面上,更多使用参考项目中的代码。

4.1K20

Android Jetpack架构组件(九)之Paging

一、Paging简介 在Android应用开发,我们经常需要以列表的方式来展示大量的数据,这些数据可能来自网路,也可以来自本地的数据。为了避免一次性加载大量的数据,对数据进行分页就显得很有必要。...[在这里插入图片描述] 如上图所示,主要的步骤如下: 使用DataSource从服务器获取或者从本地数据获取数据。 将数据保存到PageList。...PagedListAdapter 众所周知,在Android列表开发需要使用RecyclerView,并且需要配合自定义Adapter。...有新页面载入时,滚动条不会跳到指定位置,因为列表不会改变大小。 无需加载旋转图标:由于列表大小已知,因此无需提醒用户正在加载更多项。...三、Paging3 3.1 概述 Paging是JetPack框架提供的一个分页,它可以帮助开发者从本地存储或通过网络加载显示数据,不过由于历史原因,早期的Paging存在各种使用上的问题,因此Android

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

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

3.1 Jetpack MVVM 理解 Jetpack MVVMMVVM 模式在 Android 开发的一个具体实现,是 Android Google 官方提供并推荐的 MVVM实现方式。...不仅通过数据驱动完成彻底解耦,还兼顾了 Android 页面开发其他不可预期的错误,例如Lifecycle 能在妥善处理 页面生命周期 避免view空指针问题,ViewModel使得UI发生重建时 无需重新向后台请求数据...3.2 实施 我们来举个完整的例子 - 在页面显示用户信息列表,来说明 Jetpack MVVM 的具体实施。...3.2.1 构建界面 首先创建一个列表页面 UserListActivity,并且知道页面所需要的数据是,用户信息列表。 那么 用户信息列表 如何获取呢?...因此,如果用户在离开页面后再返回,则应用必须重新获取数据,即使数据未发生更改也是如此。这就浪费了宝贵的网络资源,迫使用户等待新的查询完成。

1.9K10

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

Paging,分页,按需加载部分数据。 Startup,用于App启动速度优化的,但只适用于开发者。 DataStore,用于替换SharedPreferences,目前还处于Alpha阶段。...一种情况是 R.id.sample_text是定义在在其他页面;一种情况是存在控件存在差异的 横、竖 两种布局,横屏存在此 textView 控件,而竖屏没有,那么就需要对其做判空处理。...1.2 例子 - 绑定列表数据 来举个例子进行说明:在页面展示用户信息(User)列表,同时还有两个按钮用于添加、移除用户: 我们知道,RecyclerView的所展示的列表数据, 是通过...可见DataBinding 在 Jetpack MVVM 架构 还是 有很大优势的。 最后补充说明得了 Jetpack MVVM 架构 的使用注意事项和原则,在实际项目使用 应该会很有体会。

1.4K10

Android 架构组件 - 让天下没有难做的 App

虽然 Realm 也是一个优秀的数据,但是它并没有内置于 Android 系统,所会增大 apk 的体积,使用 Room 则没有这方面烦恼。...除此之外,ViewModel 也可以用做 MVVM 模式的 VM 层,利用 Data Binding 直接把 ViewModel 的 LiveData 属性绑定到 xml 元素上,xml 声明式的写法避免了很多样板代码...进离场动画和启动选项很好理解,出栈行为是一个比较强大的功能,action 箭头所指的方向表示目标页面入栈,箭头的反方向则表示目标页面出栈,而出栈的行为在 Navigation 编辑器完全可控,我们可以指定要出栈到哪个页面...PositionalDataSource - 单页数据以位置为标识,这种模式比较常见,Room 只支持这一种,因为数据查询以 OFFSET 和 LIMIT 做分页。...、异步任务调度、生命周期管理,UI 分页、UI 导航,当然还有强大的 MVVM 框架 Data Binding,这些架构组件不但使代码变得清晰易读,而且独立于 Android SDK 向下兼容,AAC

1.2K20

Android MVVM框架搭建(四)RecyclerVIew + ViewPager2 + BaseQuickAdapter

显示数据 九、源码 前言   在日常的开发,最常用于展示数据的形式就是列表,你会看到各种各样的列表,比如图片列表、视频列表,联系人列表,而在RecyclerView出来之前列表的开发是使用ListView...,而现在绝大多数开发者都使用RecyclerVIew了,优势就不说了,都已经用了这么多年了,那么RecyclerView在MVVM要怎么使用呢?...热门壁纸数据处理   下面进入MainRepository中去对热门壁纸的数据进行处理,之前是只有从数据获取数据,现在可以通过本地数据获取。...下面在MainRepository增加一个从本地数据读取数据的方法,代码如下: /** * 从本地数据获取热门壁纸 */ private void getLocalDBForWallPaper...wallpaper表的所有数据,然后赋值给实体,再通过postValue去发送数据,页面收到通知之后就会更新适配器。

2.6K10

livedatabus详解,阿里是如何用他来做淘宝架构的?

虽然 Realm 也是一个优秀的数据,但是它并没有内置于 Android 系统,所会增大 apk 的体积,使用 Room 则没有这方面烦恼。...除此之外,ViewModel 也可以用做 MVVM 模式的 VM 层,利用 Data Binding 直接把 ViewModel 的 LiveData 属性绑定到 xml 元素上,xml 声明式的写法避免了很多样板代码...Paging 将分页逻辑拆解为三部分: 数据源 DataSource 数据块 PagedList 数据展示 PagedListAdapter DataSource 的数据来源于后端服务或者本地数据,并且用三个子类来表示三种分页模式...PositionalDataSource - 单页数据以位置为标识,这种模式比较常见,Room 只支持这一种,因为数据查询以 OFFSET 和 LIMIT 做分页。...、异步任务调度、生命周期管理,UI 分页、UI 导航,当然还有强大的 MVVM 框架 Data Binding,这些架构组件不但使代码变得清晰易读,而且独立于 Android SDK 向下兼容,AAC

1.1K30

Android Jetpack系列 之分页Paging3(一)

前言 许久没有更新Jetpack系列的文章了,本篇文章为大家分享分页Paging3的使用,如果你还没有看过我Jetpack其他的文章,可以移步至链接: Android JetPack系列文章 ,持续更新...一般我们都是自己封装RecycleView或者使用XRecycleView这种第三方去做,而Paging 就是Google为我们提供的分页功能的标准,这样我们就无须自己去基于RecycleView实现分页功能...通过上图我们也可以清晰的看出来,Paging在仓库层、ViewModel和UI层都有具体的表现,接下来我们通过一个示例来逐步讲解Paging是如何在项目架构工作的。...当然对于这个接口不需要传pageSize,所以返回的数据大小并不会受pageSize的影响,如此一来,我们就使用Paging3 完成了简单的数据分页请求。...当然在实际开发,上面的代码会有很多问题,以及Paging为我们提供了更多且有用的功能,我们将在下一篇中继续为大家分享~ Android Jetpack系列 之分页Paging3(二)~敬请期待

4K30

Android MVVM框架搭建(四)RecyclerVIew + ViewPager2 + BaseQuickAdapter

显示数据 九、源码 前言   在日常的开发,最常用于展示数据的形式就是列表,你会看到各种各样的列表,比如图片列表、视频列表,联系人列表,而在RecyclerView出来之前列表的开发是使用ListView...,而现在绝大多数开发者都使用RecyclerVIew了,优势就不说了,都已经用了这么多年了,那么RecyclerView在MVVM要怎么使用呢?...热门壁纸数据处理   下面进入MainRepository中去对热门壁纸的数据进行处理,之前是只有从数据获取数据,现在可以通过本地数据获取。...下面在MainRepository增加一个从本地数据读取数据的方法,代码如下: /** * 从本地数据获取热门壁纸 */ private void getLocalDBForWallPaper...wallpaper表的所有数据,然后赋值给实体,再通过postValue去发送数据,页面收到通知之后就会更新适配器。

2K20

如何构建Android MVVM应用程序

更是很少有博文来告诉你在Android 如何通过Data Binding 去构建MVVM 的应用框架。这也就是是本篇文章的重点。...数据驱动 在MVVM,以前开发模式必须先处理业务数据,然后根据的数据变化,去获取UI的引用然后更新UI,通过也是通过UI来获取用户输入,而在MVVM,数据和业务逻辑处于一个独立的View Model...通过上面对MVVM的简述和其他两种模式的对比,我们发现MVVM对比MVC和MVP来说还是存在比较大的优势,虽然目前Android开发可能真正在使用MVVM的很少,但是是值得我们去做一些探讨和调研。...那么ViewModel 做的就是通过传参数到Model层获取到网络数据(数据同理)然后把Model的部分数据映射到ViewModel的一些字段(ObservableField),并在ViewModel...4、总结和源码### 本篇博文讲解主要是一些个人开发过程总结的Android MVVM构建思想,更多是理论上各个模块如何分工,代码如何设计,虽然现在业界使用Android MVVM模式开发还比较少,但是随着

1.2K10

如何构建Android MVVM 应用框架

之前看过很多关于Android MVVM的博客,但大多数提到的都是DataBinding的基本用法,很少有文章仔细讲解在Android是如何通过DataBinding去构建MVVM的应用框架的。...在MVVM数据是直接绑定到UI控件上的(部分数据是可以直接反映出UI上的内容),那么我们就可以直接通过修改绑定的数据源来间接做一些Android UI上的测试。...通过上面的简述以及模式的对比,我们可以发现MVVM的优势还是非常明显的。虽然目前Android开发可能真正在使用MVVM的很少,但是值得我们去做一些探讨和调研。...ViewModel与Model的协作 从图1,ViewModel通过传参数到Model层获取网络数据(数据同理),然后把Model的部分数据映射到ViewModel的一些字段(ObservableField...虽然现在业界使用Android MVVM模式开发还比较少,但是随着DataBinding 1.0的发布,相信在Android MVVM 这一领域会更多的人来尝试。

4.5K60

Jetpack新成员,Paging3从吐槽到真香

虽然很多朋友都觉得我写的文章简单易懂,但Paging 3的复杂性在于它关联了太多其他的知识,协程、Flow、MVVM、RecyclerView、DiffUtil等等,如果你不能将相关联的这些知识都有所了解...另外这里还引入了Retrofit的,因为待会我们会从网络上请求数据,并通过Paging 3进行分页展示。...好了,现在网络相关的代码都已经准备好了,下面我们就开始使用Paging 3来实现分页加载功能。 Paging 3有几个非常关键的核心组件,我们需要分别在这几个核心组件按部就班地实现分页逻辑。...另外还可以通过params参数得到loadSize,表示每一页包含多少条数据,这个数据的大小我们可以在稍后设置。...如次一来,使用Paging 3来进行分页加载的效果也就成功完成了。

2.4K20

是时候更新手里的武器了—Jetpack架构组件简析

今天给大家带来的是Jetpack的架构组件,这个模块的组件可以说就是为MVVM框架服务的,当然每个也都是可以单独使用的。...迫不及待了吧,跟随我一起看看每个的神奇之处。 数据绑定 “数据绑定是一种支持,借助该,您可以使用声明性格式(而非程序化地)将布局的界面组件绑定到应用的数据源。...@{}符号,可以在布局中使用数据对象,并且可以通过DataBindingUtil获取赋值对象。...” 所以Paging就是一个分页,主要用于Recycleview列表展示。下面我就结合Room说说Paging的用法。...主要为了解决两大问题: 以前Activity如果被系统销毁或者需要重新创建的时候,页面临时性数据都会丢失,需要通过onSaveInstanceState() 方法保存,onCreate方法读取。

2.9K20

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

前言 -- Android开发发展到今天已经相当成熟了,各种架构大家也都耳熟能详,MVC,MVP,MVVM等,其中MVVM更是被官方推荐,成为Android开发的显学。...模型层(Model):主要负责网络请求,数据处理,I/O的操作,即页面的数据来源 由于androidxml布局的功能性太弱,Activity实际上负责了View层与Controller层两者的工作,...ViewState 对 State 集中管理,只需要订阅一个 ViewState 便可获取页面的所有状态,相对 MVVM 减少了不少模板代码。...ViewState 便可获取页面的所有状态,相对 MVVM 减少了不少模板代码 ViewModel通过ViewState与Action通信,通过浏览ViewState 和 Aciton 定义就可以理清...但通过以上的分析与介绍,我相信使用MVI架构代替没有使用DataBinding的MVVM是一个比较好的选择~ 相关视频推荐: 【2021最新版】Android studio安装教程+Android(安卓

1.9K20

Jetpack 系列之Paging3,看这一篇就够了~

前言 许久没有更新Jetpack系列的文章了,本篇文章为大家分享分页Paging3的使用,如果你还没有看过我Jetpack其他的文章,可以移步至链接: Android JetPack系列文章 ,持续更新...一般我们都是自己封装RecycleView或者使用XRecycleView这种第三方去做,而Paging 就是Google为我们提供的分页功能的标准,这样我们就无须自己去基于RecycleView实现分页功能...通过上图我们也可以清晰的看出来,Paging在仓库层、ViewModel和UI层都有具体的表现,接下来我们通过一个示例来逐步讲解Paging是如何在项目架构工作的。...当然对于这个接口不需要传pageSize,所以返回的数据大小并不会受pageSize的影响,如此一来,我们就使用Paging3 完成了简单的数据分页请求。...除此之外,Paging3还有一个比较重要的RemoteMediator,用来更好的加载网络数据和本地数据,我们后续有机会再为大家单独分享吧~ 2020年11月21日更新 paging3的设计理念是不建议对列表数据直接修改

3.2K10

Jetpack 系列之Paging3,看这一篇就够了~

前言 许久没有更新Jetpack系列的文章了,本篇文章为大家分享分页Paging3的使用,如果你还没有看过我Jetpack其他的文章,可以移步至链接: Android JetPack系列文章 ,持续更新...一般我们都是自己封装RecycleView或者使用XRecycleView这种第三方去做,而Paging 就是Google为我们提供的分页功能的标准,这样我们就无须自己去基于RecycleView实现分页功能...Paging在架构使用通过上图我们也可以清晰的看出来,Paging在仓库层、ViewModel和UI层都有具体的表现,接下来我们通过一个示例来逐步讲解Paging是如何在项目架构工作的。...当然对于这个接口不需要传pageSize,所以返回的数据大小并不会受pageSize的影响,如此一来,我们就使用Paging3 完成了简单的数据分页请求。...除此之外,Paging3还有一个比较重要的RemoteMediator,用来更好的加载网络数据和本地数据,我们后续有机会再为大家单独分享吧~ 2020年11月21日更新 paging3的设计理念是不建议对列表数据直接修改

1.9K20

一篇可能会让你爱上MVVM与ReactiveCocoa的文章

安装 2.5版本的ReactiveCocoa来在自己的项目中使用,具体细节参见: ReactiveCocoa,最受欢迎的iOS函数响应式编程(2.5版),没有之一!...还是先说一下 MVVM的基础概念吧,不然没法往下说了: 第一个M,和MVC的M基本一样.但是要求更轻量级.MVC的M,你可以会放一些和原始数据不相关的推断出来的属性或者工具方法,Person类,你可能给他写一个方法来根据原始数据年龄来判断是否有资格做某事...YFBlogListItemViewModel 博客列表单个单元格的视图模型 添加属性intro: 这个viewModel 供展示博客列表的单个单元格使用,但根据目前的UI显示,只需要一个字段即可,我们给它命名为...但是因为分类的变化最终会通过分页的变化来体现,所以此处仅需监测分页的变化情况即可....我们成功的从控制器剥离了网络请求以及数据分页的相关代码.从整体代码量的角度,我们可能没少写几行代码;但是从代码复用性的角度考虑,我们的代码更具有可复用性,因为将来可能其他地方也会用到这个页面;与此同时

1.3K60

MVVM的数据持久化(一)——ROOM的集成

MVVM数据持久化 之前我们分别介绍了MVVM框架的悲剧,项目搭建以及网络请求,接下来在这篇文章当中,我们来聊一聊MVVM数据持久化的问题,也就是我们常说的缓存 Room Room持久提供了一个SQLite...能力的同时允许流畅的数据访问,最主要的是它让SQLiteDatabase的使用变得简单,大大减少了重复的代码,并且把SQL查询的检查放在了编译时。...在注释包含与数据相关联的实体列表。 包含一个具有0个参数的抽象方法,并返回用@Dao注释的类。...在运行时,您可以通过调用Room.databaseBuilder()或Room.inMemoryDatabaseBuilder()获取数据实例。 Entity: 表示数据库内的表。...三者关系图 加入依赖 以上简单的介绍了一下Room 下面我们着重介绍如何在我们的框架当中使用 首先加入依赖 implementation 'android.arch.persistence.room

1.5K20

Android MVVM框架使用(十一)(功能开发)记事本

Android MVVM框架使用 功能开发之记事本 前言 正文 一、记事本页面 二、编辑页面 三、增加笔记表 ① Bean ② Dao ③ 数据升级迁移 ④ 新增存储类 ⑤ 新增ViewModel...一、记事本页面 既然要写一个记事本,那么首先要创建一个页面,我的代码依然还是写在MVVM框架的,在activity包下新建一个NotebookActivity,对应的布局是activity_notebook.xml...,如下图所示: 这里我是保存了数据之后关掉当前页面,就会返回到之前的NotebookActivity,那么在这个页面就需要搜索当前数据的表,然后通过列表加载出来。...首先是列表item的点击事件,点击之后传递uid到EditActivity,通过通过uid去得到Notebook。...如图所示,这里获取uid,如果为-1表示为新增,否则就是更新。是更新的话就通过查询id然后观察返回的数据变化。

99040

MVVM、RxJava、Retrofit三剑合璧,事半功倍

本文仅讨论在Android平台应用开发使用,其它平台也相似但可能存在些许差别。 简介 在搭建MVVM项目之前我们先来简单了解下MVVM模式,以及和MVP的区别。...在Android我们可以通过一个简单的配置集成DataBinding,使我们构建Android MVVM 应用程序成为可能。...在传统开发模式,必须先处理业务数据,然后根据数据变化,去获取ui控件的引用再调用控件方法更新ui,同时通过监听ui控件来获取用户输入。...:主要演示多类型RecyclerView列表Adapter的写法 (4)粉丝列表:从网络获取数据,主要演示RxJava+Retrofit的基本使用方法 构建 废话讲了这么多,下面开始正式搭建MVVM应用...RecyclerView 完成了最简单的页面,我们来看看MVVM列表页面怎么实现。首先是layout.xml。 ?

2.3K40
领券