Android项目中使用的RecyclerView向用户显示了大量数据。但是,它不被认为是一种有效的方法。从网络中获取大量信息并将其加载到应用程序上是一项至关重要的任务。此外,在使用移动应用程序时,用户一次只能观察到一小部分数据。为解决此问题,Google更新了Android的Paging体系结构组件库,并发布了Android 11 Beta。 Google发布了Paging 3库,以简化Android应用程序中Paging的实现。
Note: The Paging 3.0 library is currently in its early stages and Google released only its alpha version. The more stable version of this library is Paging 2.
Paging 3库是作为Android Jetpack系列的一部分引入的,它完全使用Kotlin Coroutines编写。该库提供了一种全新的方法,可以在应用程序上加载大量数据。该方法是一次获取一小块数据,并且当用户到达列表的末尾时,它将立即在RecyclerView中加载更多数据。此过程称为分页。该Paging 3库提供了一种在需要时自动加载更多数据的方法。开发人员可以使用Paging Library v3在其应用程序中实现分页。但是什么是分页,为什么我们需要分页?可以参考下图获得答案。
使用分页库的优点
与Android Paging库的早期版本相比,Paging 3.0版本非常独特。以下是新功能及其优势:
- 提供错误处理以及刷新和重试功能的支持。
- 对Kotlin协程,Flow,LiveData和RxJava的最佳支持。
- 内置功能可添加加载状态页眉,页脚和列表分隔符。
- 提供分页数据的内存中缓存,以确保系统地使用设备资源。
- 跟踪键,以便从下一页和上一页获取数据。
- 防止重复API请求,并确保应用程序以有效的方式使用网络带宽和系统资源。
- 通过提供取消支持和简化的数据源界面来改进存储库层。
在Android项目中使用分页库:
通过在应用程序级build.gradle文件中添加其实现以导入Paging组件,将Paging 3.0库应用到项目中。
dependencies {
def paging_version = “3.0.0-alpha11”
implementation “androidx.paging:paging-runtime:$paging_version”
}
为了使用RxJava或LiveData ,需要添加以下实现:
// RxJava2 support – optional
implementation “androidx.paging:paging-rxjava2:$paging_version”
// Guava ListenableFuture support – optional
implementation “androidx.paging:paging-guava:$paging_version”
分页库的体系结构
分页库要求适当分离项目的关注点,因此它集成了推荐的Android架构模式。库的组件在应用程序的三层中工作:
- 资料库层
- ViewModel层
- UI层
- 存储库层:此层包含PagingSource和RemoteMediator组件。 PagingSource的任务是定义数据源并从该源中获取数据。它能够从本地数据库或任何网络源加载数据。 RemoteMediator组件控制对任何分层数据源的分页。
- ViewModel: PagingData的实例由ViewModel的Pager组件提供的Public API创建。此PagingData在将ViewModel连接到UI层的反应流中公开。
- UI:分页数据的视觉表示由该层表示。它的主要组件是PagingDataAdapter ,它是一个RecyclerView来处理分页的数据。
参考: https://developer.android.com/topic/libraries/architecture/paging/v3-overview