Android Jetpack 中的架构组件可帮助您设计稳健、可测试且易维护的应用。...从最初发布的管理 Activity 和 Fragment 生命周期的Lifecycle 库和访问 SQLite 数据库的 Room 库,后来推出了分页 (Paging)、导航 (Navigation)...希望大家能在其中发现对自己的应用有帮助的全新功能以及改进: 分页库 Paging (分页) 使得开发者可以逐步、高效地加载大量数据,从而节省用户的电池和流量。...比如和 OEM 沟通,确保不同的设备能拥有一致的应用退出操作。 测试 第一点,也是开发者们一直有提到的: Robolectric 支持。...Robolectric 是一个高效可靠的 Android 单元测试框架,现在已被全面支持。 第二点,Worker 已提供单元测试的支持。
,即 MAD 之门的钥匙,它是一个包含超过 100 个库、工具及指南的套件,以帮助开发者遵循最佳实践、减少模板代码,以及编写在不同 Android 版本和设备上表现一致的代码,从而使您可以专注于在应用中实现独特的功能...在 Room 2.4 中,对 Kotlin Symbol Processing (KSP) 的支持已经稳定。在我们针对 Kotlin 代码的基准测试中,KSP 相对 KAPT 有两倍的速度提升。...这一版本还内建了对 Paging 3.0 的支持,通过使用 room-paging 组件,可以使 Room 返回 PagingSource 对象。...如需了解有关 Paging 3 的更多信息,请参阅 Android 开发者网站中全新简化版的教程: Paging Basics Codelab,它描述了如何在包含列表的应用中集成 Paging 库。...后者作为 @RequiresApi 的必然结果,可以阻止在某个 API 级别之上进行使用。
作者 / Florina Muntenescu, Android Developer Advocate Android Jetpack 是一套库、工具和指导规范,帮助开发者遵循最佳实践,减少模板代码,以及编写在不同的...△ Android S+ 上的集中存储,用于整合到全设备搜索中 Room Room 是我们推荐大家采用的数据持久层,在平台上提供更多的可用性和安全性。...当您的数据库模式发生变化时,您现在可以声明一个 @AutoMigration,指出您想从哪个版本迁移到哪个版本,Room 就会为您生成迁移结果。...您可以远程使用该库来跟踪持续集成测试中的指标,或在本地配合 Android Studio 中的剖析结果来使用。请 观看 Google I/O 演讲 进一步了解相关细节。...不同设备类型 Jetpack 让您可以更轻松地针对不同形态的设备进行开发,包括可折叠设备、大屏幕设备和 Wear 设备。
paging * 在页面中加载数据,并在 RecyclerView 中呈现。 room * 创建、存储和管理由 SQLite 数据库支持的持久性数据。...test * 在 Android 中进行测试。 work * 调度和执行可延期且基于约束条件的后台任务。 ads 获取广告 ID(无论是否通过 Play 服务)。...Paging 3 — 增量加载和显示数据 Paging 3 是一个分页库,可帮助您以增量方式加载和显示小块数据。...WindowManager — 更好地支持设备外形 WindowManager 它为新旧平台版本上的不同 WindowManager 功能提供了一个通用的 API 。...UI 组件、深色主题支持、新的 UI 测试和动画 API、对 的初始支持ConstraintLayout、状态改进管理、与可观察流的集成和 RTL 支持。
接下来的例子将使用 Kotlin 及其协程功能编写,如果您需要使用 LiveData/RxJava 实现的 Java 编程语言示例,请参阅 Android 开发者文档 | Paging 3 库概述。...下图为您应用的各个层级中推荐直接接入 Paging 的 Android 应用架构: ? Paging 组件及其在应用架构的集成 定义数据源 数据源的定义取决于您从哪里加载数据。...,从 2.3.0-alpha 开始,它将默认为您实现 Paging Source,请参见: Android 开发文档|使用 Room DAO 访问数据; 如果您从一个 多层级数据源 加载数据,就像带有本地数据库缓存的网络数据源那样...} } } }.cachedIn(viewModelScope) 就像前面一样,我们会在数据到达 UI 层之前使用 cachedIn,这样便可以缓存所有已经加载的数据以及数据转换的结果...请参阅以下资源开始使用 Paging: Android 开发文档|Paging 3 库概述 Codelab|Android Paging 代码示例|Paging With Network Sample
它继承自AbstractList,支持所有List的操作,它的内部有五个主要变量: mMainThreadExecutor 主线程Executor,用于将结果传递到主线程 mBackgroundThreadExecutor...Paging库中提供了三个子类来让我们在不同场景的情况下使用: PageKeyedDataSource:如果后端API返回数据是分页之后的,可以使用它;例如:官方Demo中GitHub API中的SearchRespositories...// alternatively - without Android dependencies for testing testImplementation "androidx.paging...(item) } } 3.3 PagingWithNetWork 使用 上面我们通过Room进行了数据库加载数据,下面看一下通过网络请求记载列表数据: 和上面不同的就是Respository数据源的加载...GankDataSource我们继承自PageKeyedDataSource,它实现了三个方法: loadInitial: 初始化加载,初始加载的数据 也就是我们直接能看见的数据 loadAfter: 下一页加载,每次传递的第二个参数
,以及 FragmentFactory 和 FragmentContainerView 的使用 我近期也在开发另外一个 Jetpack + MVVM 实战应用,和神奇宝贝(PokemonGo) 有很多不同之处...在 Google 发布的 Jetpack 的最新成员 Paging3,在其内部的源码实现也是使用的 Flow,关于 Paging3 的使用可以参考以下链接: Jetpack 成员 Paging3 实践以及源码分析...没有那么多傻傻分不清楚的操作符 简单的数据转换与操作符,如 map 等等 Flow 是对 Kotlin 协程的扩展,让我们可以像运行同步代码一样运行异步代码,使得代码更加简洁,提高了代码的可读性 易于做单元测试...Flow 是协程的扩展,如果要在 Room 和 Retrofit 中使用,Room 和 Retrofit 需要支持协程才可以,在 Retrofit >= 2.6.0 和 Room >= 2.1 版本都支持协程...,我们来看一下 Room 和 Retrofit 数据源的配置。
下面我们通过两个具体实例来对Paging进行了解 Database中的使用 自定义DataSource 2 Database中的使用 Paging在Database中的使用非常简单,它与Room结合将操作简单到了极致...如果需要完整代码可以查看下面的Github链接 https://github.com/idisfkj/android-api-analysis 3 自定义DataSource 上面是通过Room来获取数据...进行封装,统一通过sendRequest抽象方法来获取NewsListingModel的封装结果实例。...4 项目地址 Android精华录 该库的目的是结合详细的Demo来全面解析Android相关的知识点, 帮助读者能够更快的掌握与理解所阐述的要点 链接地址(或者点击阅读原文): https://github.com.../idisfkj/android-api-analysis
背景介绍 早在2008年,Google 推出了Android ,但那个时候 Android 刚刚问世,经过这将近11年的发展和不断优化,Android 可以说逐渐变得成熟,方便和应用越来越广。...Architecture Compinents(架构组件) 架构组件包括 Data Bingding(数据绑定) Room(数据库) WorkManager(后台任务管家) Lifecycle(生命周期...) Navigation(导航) Paging(分页) Data Binding(数据绑定) LiveData(底层数据通知更改视图) ViewModel(以注重生命周期的方式管理界面的相关数据) Foundation...(基础) AppCompat(向后兼容) Android KTX(编写更加简洁的Kotlin代码) Multidex (多处理dex的问题) Test(测试) Behavior(行为) Download...4.加速Android的开发进程。 最后 可以看得出,Google 推出的 Android Jetpack 组件的集合,可以让我们开发者更加轻松地开发出出色的 Android 应用。
Paging 3 — 分页加载显示数据内容 Paging 开发库可以帮助分页加载显示数据内容。我们发布了使用 Kotlin 的协程 重写的 Paging 3。...无论是使用 Room 还是直接使用 SQLite,您都可以通过菜单栏中的 View > Tool Windows > Database Inspector 开始调试数据库。...,该工具可以帮助开发者分析应用性能基准测试结果,并且可以在 Android Studio 中直接查看相关方法和抽样的堆栈信息。...CameraX 库 由于 Android 设备的多样性,市面上有太多的不同种类的相机硬件,而 CameraX 可以兼容市面上 90% 的设备。...我们的 CameraX 测试实验室也在不断地针对不同机型进行自动化测试,以最大程度地兼容市面上超过 4 亿台的设备。
将之前发布的一系列组件比如 Lifecycle、LiveData、Room、ViewModel等进行融合从而推出了一套官方认证的开发体系Android Jetpack。...这次的Android Jetpack推出了五个新组件,它们分别是:Navigation(导航组件)、Paging(分页组件)、WorkManager(处理类似后台任务组件)、Slices(切片)、Android...Key相当于加载数据的条件信息,Value对应返回的结果。...不同点:PageKeyedDataSource和ItemKeyedDataSource需要实现loadBefore()和loadAfter()方法,而PositionalDataSource需要实现loadRange...它提供了五个成员变量如下: mMainThreadExecutor:主线程的Executor, 可以将结果post到主线程。
(架构组件) Architecture指的是架构组件,旨在帮助开发者设计稳健、可测试且易维护的应用。...与常规observable不同,LiveData是有生命周期感知的。...Navigation:处理应用内导航所需的一切 Paging:一次加载 or 按需加载 & 显示小块数据 Room:帮助开发者更友好、流畅的访问SQLite数据库。...测试:用于单元和运行时界面测试的Android 测试框架。 TV: 构建可让用户在大屏幕上体验沉浸式内容的应用。 Wear OS:开发Wear应用的组件。...implementation "android.arch.persistence.room:runtime:1.1.1" annotationProcessor "android.arch.persistence.room
前言 在2018年 Google I/O 大会上发布了一系列辅助Android开发者开发的实用工具集合:Jetpack 今天,我将主要介绍Android Jetpack的相关内容,包括其作用、特点 &...具体描述 4.1 基础 - Foundation 提供了最基础的底层功能,如向后兼容性、测试、开发语言Kotlin支持等。...包含的组件库: 4.2 架构 - Architecture 帮助开发者设计稳健、可测试且易维护的应用 Data Binding(数据绑定):属于支持库可使用声明式将布局中的界面组件绑定到应用中的数据源...与常规observable不同,LiveData是有生命周期感知的。...Navigation:处理应用内导航所需的一切 Paging:一次加载 or 按需加载 & 显示小块数据 Room:帮助开发者更友好、流畅的访问SQLite数据库。
不同公司对分页机制所涉及的API接口通常会不一样,但总体而言,可以分为3中。...针对这些不同的分类,Paging提供了PageKeyedDataSource、PositionalDataSource和ItemKeyedDataSource。...DataSource的来源可以是网路,也可以是本地的数据库,如Room。...三、Paging3 3.1 概述 Paging是JetPack框架提供的一个分页库,它可以帮助开发者从本地存储或通过网络加载显示数据,不过由于历史原因,早期的Paging存在各种使用上的问题,因此Android...3.1.3 Paging3应用架构 下面是Android官方推荐的接入 Paging3的应用架构图。
具体描述 4.1 基础 - Foundation 提供了最基础的底层功能,如向后兼容性、测试、开发语言Kotlin支持等。...包含的组件库: 4.2 架构 - Architecture 帮助开发者设计稳健、可测试且易维护的应用 Data Binding(数据绑定):属于支持库可使用声明式将布局中的界面组件绑定到应用中的数据源...与常规observable不同,LiveData是有生命周期感知的。...Navigation:处理应用内导航所需的一切 Paging:一次加载 or 按需加载 & 显示小块数据 Room:帮助开发者更友好、流畅的访问SQLite数据库。...:Carson_Ho的Android博客
无论是使用 Room 还是直接使用 SQLite,您都可以通过菜单栏中的 View > Tool Windows > Database Inspector 开始调试数据库。...初始的发布版本提供了对于市面上已有以及即将上市的不同可折叠设备的支持,开发者可以利用其适配所有不同类型的硬件配置。...CPU 性能剖析工具,该工具可以帮助开发者分析应用性能基准测试结果,并且可以在 Android Studio 中直接查看相关方法和抽样的堆栈信息。.../games/sdk CameraX 库 由于 Android 设备的多样性,市面上有太多的不同种类的相机硬件,而 CameraX 可以兼容市面上 90% 的设备。...我们的 CameraX 测试实验室也在不断地针对不同机型进行自动化测试,以最大程度地兼容市面上超过 4 亿台的设备。 在最近的版本中,CameraX 引入了对于 PreviewView 组件的优化。
组件介绍 Android Architecture Components 是一组库,可帮助您设计健壮、可测试和可维护的应用程序。...lifecycle 处理生命周期,创建一个自动响应生命周期事件的用户界面 LiveData 构建底层数据库更改时通知试图的数据对象(数据驱动界面) ViewModel 存储未在应用旋转中销毁的UI相关数据 Room...使用应用内对象和编译时检查来访问您的应用的SQLite数据库 Paging 逐步从数据源加载所需的信息 整体结构如下: ?...ViewModel负责View层和Repository层的数据管理; LiveData是一个可以保存数据和观察数据变化的组件; Room通过注解来控制实体和操作数据库 Paging是一个处理数据分页的组件...:reactivestreams:$lifecycle_version" // optional - Test helpers for LiveData testImplementation
与常规的可观察类不同,LiveData 具有生命周期感知能力,意指它遵循其他应用组件(如 Activity、Fragment 或 Service)的生命周期。...implementation "androidx.room:room-runtime:$room_version" kapt "androidx.room:room-compiler:$room_version...” 所以Paging就是一个分页库,主要用于Recycleview列表展示。下面我就结合Room说说Paging的用法。...不同的 Fragment 可以使用其父Activity共享ViewModel 来进行数据的通信,厉害吧。还有很多其他的用法,去项目中慢慢发现吧!...而且能够保证你的任务可靠运行,一定可以上传到,当然也是支持监听任务结果等。?
这次主要涉及的是对Paging运用的全面介绍,相信你阅读了这篇文章之后将对Paging的运用了如指掌。...下面我们通过两个具体实例来对Paging进行了解 Database中的使用 自定义DataSource 2 Database中的使用 Paging在Database中的使用非常简单,它与Room结合将操作简单到了极致...如果需要完整代码可以查看下面的Github链接 https://github.com/idisfkj/android-api-analysis 3 自定义DataSource 上面是通过Room来获取数据...3.3 Repository & ViewModel 这里与Database不同的是,并没有直接在ViewModel中通过DataSource.Factory来获取pagedList,而是进一步使用...Repository进行封装,统一通过sendRequest抽象方法来获取NewsListingModel的封装结果实例。
针对在应用中使用 Room 或 SQLite 数据库的,添加了更好的代码编辑器支持来帮助创建 SQL 表和查询语句。...此外,还为 Kotlin 代码添加了更好的 lint 支持,并更新了带有 Quick Boot 的 Android 模拟器,以加速测试。 除此之外,本次升级还带来了如下的一些变化。...Database Code Editing - 编辑 Android 项目中的内嵌 SQL / Room 数据库代码更容易。...Test Quick Boot - 可在 6 秒内快速重置 Android Emulator 会话。...Network Profiler Updates: Threads & Network Request - 新增网络线程视图来检查多线程网络流量,并添加了一个新的网络请求选项卡,以便随着时间的推移深入了解网络请求
领取专属 10元无门槛券
手把手带您无忧上云