分页库概述 是 Android Jetpack 的一部分。
分页库可帮助您从本地存储或网络加载和显示来自更大数据集的数据页面。这种方法使您的应用能够更有效地利用网络带宽和系统资源。分页库的组件旨在融入推荐的 Android 应用架构,与其他 Jetpack 组件无缝集成,并提供一流的 Kotlin 支持。
使用分页库的好处
分页库包含以下功能
- 为您的分页数据提供内存缓存。这有助于确保您的应用在处理分页数据时有效地利用系统资源。
- 内置请求重复数据删除,有助于确保您的应用有效地利用网络带宽和系统资源。
- 可配置的
RecyclerView
适配器,可在用户滚动到已加载数据的末尾时自动请求数据。 - 一流地支持 Kotlin 协程和流以及
LiveData
和 RxJava。 - 内置支持错误处理,包括刷新和重试功能。
提供反馈
您的反馈有助于改进 Jetpack。如果您发现新的问题或有改进此库的想法,请告诉我们。在创建新问题之前,请查看此库的 现有问题。您可以通过点击星形按钮为现有问题添加您的投票。
有关提交反馈的更多信息,请参阅 问题跟踪器文档。
设置
要将分页组件导入您的 Android 应用,请将以下依赖项添加到应用的 build.gradle
文件中
Groovy
dependencies { def paging_version = "3.3.2" implementation "androidx.paging:paging-runtime:$paging_version" // alternatively - without Android dependencies for tests testImplementation "androidx.paging:paging-common:$paging_version" // optional - RxJava2 support implementation "androidx.paging:paging-rxjava2:$paging_version" // optional - RxJava3 support implementation "androidx.paging:paging-rxjava3:$paging_version" // optional - Guava ListenableFuture support implementation "androidx.paging:paging-guava:$paging_version" // optional - Jetpack Compose integration implementation "androidx.paging:paging-compose:3.3.2" }
Kotlin
dependencies { val paging_version = "3.3.2" implementation("androidx.paging:paging-runtime:$paging_version") // alternatively - without Android dependencies for tests testImplementation("androidx.paging:paging-common:$paging_version") // optional - RxJava2 support implementation("androidx.paging:paging-rxjava2:$paging_version") // optional - RxJava3 support implementation("androidx.paging:paging-rxjava3:$paging_version") // optional - Guava ListenableFuture support implementation("androidx.paging:paging-guava:$paging_version") // optional - Jetpack Compose integration implementation("androidx.paging:paging-compose:3.3.2") }
库架构
分页库的组件在应用的三个层级中运行
- 存储库层
ViewModel
层- UI 层
本节介绍在每个层级运行的分页库组件,以及它们如何协同工作以加载和显示分页数据。
存储库层
存储库层中的主要分页库组件是 PagingSource
。每个 PagingSource
对象都定义了一个数据源以及如何从该数据源检索数据。一个 PagingSource
对象可以从任何单个源加载数据,包括网络源和本地数据库。
您可能使用的另一个分页库组件是 RemoteMediator
。一个 RemoteMediator
对象处理来自分层数据源的分页,例如具有本地数据库缓存的网络数据源。
ViewModel 层
Pager
组件提供了一个公共 API,用于基于 PagingSource
对象和 PagingConfig
配置对象,构建在响应式流中公开的 PagingData
实例。
连接 ViewModel
层和 UI 的组件是 PagingData
。 PagingData
对象是分页数据快照的容器。它查询 PagingSource
对象并存储结果。
UI 层
UI 层中主要的 Paging 库组件是 PagingDataAdapter
,这是一个处理分页数据的 RecyclerView
适配器。
或者,您可以使用包含的 AsyncPagingDataDiffer
组件构建您自己的自定义适配器。
其他资源
要了解有关 Paging 库的更多信息,请参阅以下其他资源
Codelabs
示例
为您推荐
- 注意:当 JavaScript 关闭时显示链接文本
- 加载和显示分页数据
- 迁移到 Paging 3
- 从网络和数据库分页