分页库概览 Android Jetpack 的一部分。
Paging 库可帮助您加载和显示来自本地存储或网络中更大的数据集中的数据页面。此方法可让您的应用更高效地利用网络带宽和系统资源。Paging 库的组件旨在契合推荐的 Android 应用架构,流畅集成其他 Jetpack 组件,并提供一流的 Kotlin 支持。
使用 Paging 库的优势
Paging 库包含以下功能:
- 分页数据的内存中缓存。该功能有助于确保您的应用在处理分页数据时高效使用系统资源。
- 内置的请求去重功能,可确保您的应用高效利用网络带宽和系统资源。
- 可配置的
RecyclerView
适配器,会在用户滚动到已加载数据的末尾时自动请求数据。 - 对 Kotlin 协程和数据流以及
LiveData
和 RxJava 的一流支持。 - 内置对错误处理功能的支持,包括刷新和重试功能。
提供反馈
您的反馈将帮助我们改进 Jetpack。如果您发现了新问题,或对此库有任何改进建议,请告诉我们。创建新问题前,请先查看此库中的现有问题。您可以点击星标按钮,为现有问题投票。
如需详细了解如何提交反馈,请参阅问题跟踪器文档。
设置
如需将 Paging 组件导入到 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") }
库架构
Paging 库的组件在应用的三个层运行:
- 代码库层
ViewModel
层- 界面层
本部分介绍了在每个层运行的 Paging 库组件以及它们如何协作加载和显示分页数据。
代码库层
代码库层中的主要 Paging 库组件是 PagingSource
。每个 PagingSource
对象都定义了数据源,以及如何从该数据源检索数据。PagingSource
对象可以从任何单个数据源(包括网络来源和本地数据库)加载数据。
您可能使用的另一个 Paging 库组件是 RemoteMediator
。RemoteMediator
对象会处理来自分层数据源(例如具有本地数据库缓存的网络数据源)的分页。
ViewModel 层
Pager
组件提供了一个公共 API,基于 PagingSource
对象和 PagingConfig
配置对象来构造在响应式流中公开的 PagingData
实例。
将 ViewModel
层连接到界面的组件是 PagingData
。PagingData
对象是用于存放分页数据快照的容器。它会查询 PagingSource
对象并存储结果。
界面层
界面层中的主要 Paging 库组件是 PagingDataAdapter
,它是一种处理分页数据的 RecyclerView
适配器。
此外,您也可以使用随附的 AsyncPagingDataDiffer
组件构建自己的自定义适配器。
其他资源
如需详细了解 Paging 库,请参阅下列其他资源:
Codelab
为您推荐
- 注意:当 JavaScript 处于关闭状态时,系统会显示链接文字
- 加载并显示分页数据
- 迁移到 Paging 3
- 从网络和数据库分页