前言 大约在两年前,写了一篇Jetpack 系列之Paging3,看这一篇就够了~,本篇文章主要来看,在Compose中如何使用Paging3,这里不得不说一句,在xml中使用Paging3和在Compose...Paging3的使用 项目搭建 首先,我们新建项目,在build.gradle中引入compose的paging库,这里将网络请求等依赖库一并引入。...举个例子,请求出错时会调用refresh方法加载 ,如果当前已经请求了第一页到第四页的数据, 可以通过设置在refresh 后会加载第5 - 8页的数据,并且前四页的数据都没了。...如果getRefreshKey返回null,refresh后 会重新加载第一到第四页的数据,这里我们直接返回null即可。...源码地址已上传 源码地址:GitHub - huanglinqing123/ComposePagingDemo: Compose中使用Paging3分页库示例
Paging3 - 逐步加载和显示数据 Paging 是一个帮助你逐步分块加载和显示数据的类库。今天我们发布了 Paging3 ,使用 Kotlin Coroutines 完全重写。...通过 Paging3 ,数据源可以继承 PagingSource ,并实现 suspend load 方法,在其中可以直接调用其他挂起函数。...关于 Paging3 的更新信息,请查看 文档 和 codelab 。 译者注:视频里有提到,Paging3 是兼容 Paging2 的,大家可以放心升级(我不负责。。) 。...Jetpack Compose - 全新的 UI 工具包 最新的现代化 UI 工具包 Jetpack Compose 现在已经到达 Developer Preview 2 版本。...更多信息可以观看视频 What's new in Compose? 最后 前面快速介绍了 Jetpack 在之前几个月的更新。
前言 许久没有更新Jetpack系列的文章了,本篇文章为大家分享分页库Paging3的使用,如果你还没有看过我Jetpack其他的文章,可以移步至链接: Android JetPack系列文章 ,持续更新中...Paging是什么 想想我们之前的业务中,实现分页加载需要怎么处理?...prefetchDistance:预取距离,简单解释就是 当距离底部还有多远的时候自动加载下一页,即自动调用load方法,默认值和pageSize相等 enablePlaceholders:是否显示占位符...当我们往下滑动时,当底部还剩1个(pageSize)数据的时候会自动加载下一页。...当然在实际开发中,上面的代码会有很多问题,以及Paging为我们提供了更多且有用的功能,我们将在下一篇中继续为大家分享~ Android Jetpack系列 之分页库Paging3(二)~敬请期待
在 Google 发布的 Jetpack 的最新成员 Paging3,在其内部的源码实现也是使用的 Flow,关于 Paging3 的使用可以参考以下链接: Jetpack 成员 Paging3 实践以及源码分析...(一)(https://juejin.im/post/6844904193468137486) Jetpack 新成员 Paging3 网络实践及原理分析(二)(https://juejin.im/post...Kotlin Flow 在数据源中的使用 在 [PokemonGo](https://github.com/hi-dhl/PokemonGo) 项目中,进入详情页,会检查本地是否有数据,如果没有会去请求...[pokeapi] (https://pokeapi.co/)详情页接口,获得最新的数据,然后存储在数据库中。...Kotlin Flow 在 ViewModel 中的使用 在 ViewModel 中使用 Flow 之前在 Jetpack 成员 Paging3 实践以及源码分析(一) 文章也有提到, 这里我们在深入分析一下
前言 许久没有更新Jetpack系列的文章了,本篇文章为大家分享分页库Paging3的使用,如果你还没有看过我Jetpack其他的文章,可以移步至链接: Android JetPack系列文章 ,持续更新中...prefetchDistance:预取距离,简单解释就是 当距离底部还有多远的时候自动加载下一页,即自动调用load方法,默认值和pageSize相等 enablePlaceholders:是否显示占位符...当我们往下滑动时,当底部还剩1个(pageSize)数据的时候会自动加载下一页。...Paging的加载状态 Paging3 为我们提供了获取Paging加载状态的方法,其中包含添加监听事件的方式以及在adapter中直接显示的方式,首先我们来看监听事件的方式 使用监听事件方式获取加载状态...prepend 在当前列表头部添加数据的时候使用 也就是说如果监测的是it.refresh,当加载第二页第三页的时候,状态是监听不到的,这里只以it.refresh为例。
ItemKeyedDataSource:请求下一页的关键字。...loadBefore():请求上一页数据,基本没有用处。 loadAfter(): 请求下一页数据。...三、Paging3 3.1 概述 Paging是JetPack框架提供的一个分页库,它可以帮助开发者从本地存储或通过网络加载显示数据,不过由于历史原因,早期的Paging存在各种使用上的问题,因此Android...而load方法的参数LoadParams中有一个key值,可以在加载下一页数据时使用。...参考: 使用官方Paging3分页库实现RecyclerView加载更多
前言 许久没有更新Jetpack系列的文章了,本篇文章为大家分享分页库Paging3的使用,如果你还没有看过我Jetpack其他的文章,可以移步至链接: Android JetPack系列文章 ,持续更新中...prefetchDistance:预取距离,简单解释就是 当距离底部还有多远的时候自动加载下一页,即自动调用load方法,默认值和pageSize相等 enablePlaceholders:是否显示占位符...接收最新的数据,通过PagingAdapter的submitData方法为adapter提供数据,运行结果如下所示(忽略丑陋的UI.jpg) 当我们往下滑动时,当底部还剩1个(pageSize)数据的时候会自动加载下一页...Paging的加载状态 Paging3 为我们提供了获取Paging加载状态的方法,其中包含添加监听事件的方式以及在adapter中直接显示的方式,首先我们来看监听事件的方式 使用监听事件方式获取加载状态...prepend 在当前列表头部添加数据的时候使用 也就是说如果监测的是it.refresh,当加载第二页第三页的时候,状态是监听不到的,这里只以it.refresh为例。
目前为止,我们只在 Android 开发中看到 Jetpack Compose[2]。...关于如何使用 Jetpack Compose for desktop,我计划在未来写一些文章加以阐述,本文是这个系列的第一篇文章。...运行你的第一个桌面应用 如果进展顺利,整个桌面项目加载完成后你将会看到以下界面: ? 此时,你可以运行该应用程序了。...Jetpack Compose Components (Part 2)[4] 下一段代码是定义一个具有点击功能的按钮,并将整个应用窗口设置为 Material 主题。...捐赠 如果你刚入门 Jetpack Compose ,可以从这里开始。
为了包含 Jetpack Compose 1.0.0-beta05 的更新内容,这篇文章在第一次发布后做出了更新。如果您希望查看 原始版本,请点击 这里。...2020 年,我开始了缓慢迁移 Tivi UI 的任务,目标是使其转为由 Jetpack Compose 编写。大约 12 个月之后,任务完成!...最近在 Paging3 支持了 Compose 后,我迁移了最后的界面: "列表" 网格: https://p3-juejin.byteimg.com/tos-cn-i-k3u1fbpfcp/ec8cbece28db4f6dae759b1fb520a243...测试设置 在进行下一步前,很重要的一点是要知道我是如何测量出下面的数字的。我遵循了与 Chris Horner 测量 不同 CPU 上的构建时间 时类似的设置。...您可以查看我们发布的文章来了解更多: 深入详解 Jetpack Compose | 优化 UI 构建 深入详解 Jetpack Compose | 实现原理 注意事项 关于上面的所有结果,有些事项需要注意
关于开发中常见的状态页组件,我们已经见了很多,但是在 JetPack Compose 中该如何去写呢?虽然也有大佬写了相关demo ,但是如果要应用到实际中,不免有些捉襟见肘 。...而在 compose 中,重组会执行所有调用的地方,并判断是否需要执行,我们必须要考虑如何避免重复的重组。...-> Unit // 刷新时的回调,可以在这里回调里做数据加载,加载完成后调用showContent即可。 private var onRefresh: stateBlock?...回调,即加载页面数据,从而调用了我们 ViewModel 内部的 getData() 方法,当数据加载完成,我们便可以直接驱动这个 state 展现当前加载成功状态,从而触发外部的重组,于是我们的 StateCompose...总结 本篇是 Compose 落地实践中比较常见的一篇,借此实践便于大家更好的理解 Compose 的编程思想。后续我将继续深追 Compose 的部分源码设计以及在实际落地中的场景解决方案。
关于开发中常见的状态页组件,我们已经见了很多,但是在 JetPack Compose 中该如何去写呢?虽然也有大佬写了相关demo ,但是如果要应用到实际中,不免有些捉襟见肘 。...而在 compose 中,重组会执行所有调用的地方,并判断是否需要执行,我们必须要考虑如何避免重复的重组。...-> Unit // 刷新时的回调,可以在这里回调里做数据加载,加载完成后调用showContent即可。 private var onRefresh: stateBlock?...回调,即加载页面数据,从而调用了我们 ViewModel 内部的 getData() 方法,当数据加载完成,我们便可以直接驱动这个 state 展现当前加载成功状态,从而触发外部的重组,于是我们的 StateCompose...总结 本篇是 Compose 落地实践中比较常见的一篇,借此实践便于大家更好的理解 Compose 的编程思想。后续我将继续深追 Compose 的部分源码设计以及在实际落地中的场景解决方案
结合retrofit运用 kotlin--StateFlow运用 kotlin--SharedFlow运用 接着,Jetpack的Paging3中,我们使用的语言是kotlin,相信通过这些项目的对比,...有三种返回参数: MediatorResult.Error(e):出现错误 MediatorResult.Success(endOfPaginationReached = true):请求成功且有数据(还有下一页...} catch (e: Exception) { return MediatorResult.Error(e) } } 3.PagingState 对于下一页的数据...,则要使用PagingState获取了,PagingState分为两部分组成: pages:上一页的数据,主要用来获取最后一个item,作为下一页的开始位置 config:配置Pager时的PagingConfig...,可以获取到pageSize等一系列初始化配置的值 如果上一页最后一个item为空,那么表示列表加载到底了,否则获取到需要加载的当前page { //加载更多
为了让 Jetpack Compose 的使用体验更上一层楼,以及了解大家对 Compose 开发、学习方面的内容需求,这里诚邀您参与 Jetpack Compose 使用情况调研, 点击这里 即刻参与调研...从那时起,Google Play 商店与 Jetpack Compose 团队密切合作,发布并完善了满足我们特定需求的 Jetpack Compose 版本。...此项改进的实现得益于 Compose 是一个利用了 Kotlin 简洁性的声明式界面框架。自定义绘图和布局现在是简单的函数调用,而不用再通过对视图子类进行各种复写。...在屏幕上渲染单个界面组件很快,但是将整个 Compose 框架加载到应用内存中所用的端到端时间却很长。 Play 商店采用 Compose 后最大的性能改进之一来自 基准配置文件 的开发。...当代码在同一页面上运行时就会出现这种情况,当两个不同的页面 (例如,Play 商店主页和搜索结果页) 各自位于不同的堆栈上时,也会出现这种情况。
Compose 编程思想 | Jetpack Compose | Android Developers Compose 布局基础知识 | Jetpack Compose | Android...Developers 原创:写给初学者的Jetpack Compose教程,基础控件和布局 原创:写给初学者的Jetpack Compose教程,Modifier 原创:写给初学者的Jetpack Compose...如果你尝试在非 Compose 函数中调用它,将会出现编译错误。...PagingConfig 对象用于配置分页的行为和属性,其中包括: pageSize:每一页的数据大小。 initialLoadSize:初始加载的数据大小。...prefetchDistance:在达到列表末尾之前开始预取下一页的距离。 pagingSourceFactory 函数用于创建一个实现 PagingSource 接口的数据源。
ItemKeyedDataSource 适用于当目标数据的下一页需要依赖上一页数据中的最后一个对象中的某个字段作为key的情况,如评论数据的接口携带参数since和pageSize。...,当第一页数据加载完成后,加载下一页数据的工作,通过callback.onResult()回传PagedList */ @Override public void loadRange...//设置每页的大小 .setPageSize(ArticlesDataSource.PAGE_SIZE) //设置距离底部多少条数据加载下一页数据...Articles> call, @NonNull Throwable t) { } }); } /** *加载下一页的工作...DataSource Paing2中的DataSource有三种,Paging3中将它们合并到了PagingSource中,实现load()和getRefreshKey(),在Paging3中,所有加载方法参数被一个
Paging 开发库可以帮助分页加载显示数据内容。...此外,新版本还添加了用来监控列表加载状态的一系列的 API,以及重试和刷新的方法等。...Compose — 全新的 Android UI 开发框架 Jetpack Compose 是全新的现代 Android UI 开发框架,目前发布了开发者预览第二版。...Jetpack Compose https://developer.android.google.cn/jetpack/compose 更多关于所有更新内容,请观看下方视频 What’s new in...Compose,欢迎大家尝鲜这些新的更新并积极向我们反馈。
而Jetpack Compose可以说是近几年里Android开发领域最大的一次更新,且未来的Android程序开发一定会全面向Jetpack Compose转型。...当然,严格意义上讲,Jetpack Compose也不能算是新鲜技术了。...经过四年多的迭代,Jetpack Compose现在已经相当成熟和稳定,并且绝大多数使用View能完成的效果,现在使用Jetpack Compose同样都能够完成。...再加上考虑到现在国内Jetpack Compose的普及率仍然很低,因此我觉得现在是时候开始写写Compose相关的文章了。...我希望能够完全站在初学者的角度上边学边写,看完这个系列后大家能对Jetpack Compose有一个比较全面的认识。 简单起见,从这里开始,我们将Jetpack Compose简称为Compose。
作者 / Android 开发者关系工程师 Florina Muntenescu 我们一如既往地搭建 产品路线图,现在已经发布了 Jetpack Compose 的 1.1 版本,这是 Android...您可以查看 最新路线图,了解我们目前正在评估和开发的功能,比如延迟加载项目动画、可下载的字体、可移动的内容等等!...Jetpack Compose 现已推出稳定版本,供大家在生产环境中使用,并且会继续添加您想要的功能。...我们很高兴看到成千上万的应用已经开始在生产环境中使用 Jetpack Compose,我们迫不及待想看到您将构建的应用!...我们很感激开发者们在 Alpha 版和 Beta 版期间,通过 问题跟踪页 提交的错误报告和功能请求,帮助我们改进了 Compose 并构建您需要的 API。
MVP MVP主要特点是presenter与View之间通过接口通信,presenter通过调用View的方法实现UI的更新。...MVVM的的优点: 低耦合性 重复使用性 独立开发性 可测试性 [0e22b40354435eeba87d1457f3d06bdf.png] MVVM的出现解决了: 1.开发者大量调用相同的 DOM...2.大量的DOM操作会降低页面的渲染性能,导致加载的速度变慢,影响用户体验。...为了帮助大家系统的学习,在这里给大家分享一份谷歌大佬整理的《Jetpack Compose 入门到精通》,希望可以帮助大家快速入门Compose。 第一章 初识 Jetpack Compose 1....Jetpack Compose应用2 3.
2019-2020 Kotlin,协程 MVP,Hilt,MVVM ,JetPack 相关 热修复 Flutter 浅试 自动化、持续集成相关 2021-2022 JetPack Compose Epoxy...技术支持方面,Android团队 为此专门准备了一个新的 JetPack 组件,JetPack WindowManager,其主要功能就是监听屏幕的折叠状态,以及当前相应的屏幕信息,目前主要以可折叠设备为目标...JetPack Compose Compose 自从发布第一个稳定版本后,在今年的 IO 大会上也有专门的分区去讲。...这项技术其实并不新奇,但是因为其本身需要的前备知识挺多,比如 Android打包流程 ,APK打包流程,字节码,自定义 Gradle 插件,Transform API ,导致细分为了好多领域,大佬们依然在热追,...主要是 合规 带来的影响,大的环境下,可能以后打包时,我们都会监测相应的权限声明与隐私调用,否则如何确保后续的改动不会导致违规呢?但如何确定某个 sdk 没有调用?
领取专属 10元无门槛券
手把手带您无忧上云