Jetpack 之 Paging3 RemoteMediator

实现加载网络分页数据并更新到数据库中,但是数据源的变动不能直接映射到 UI 上


RemoteMediator 和 PagingSource 相似,都需要覆盖 load() 方法,但是不同的是 RemoteMediator 不是加载分页数据到 RecyclerView 列表上,而是获取网络分页数据并更新到数据库中。

区别:

PagingSource:实现单一数据源以及如何从该数据源中查找数据,例如 Room,数据源的变动会直接映射到 UI 上
RemoteMediator:实现加载网络分页数据并更新到数据库中,但是数据源的变动不能直接映射到 UI 上
在项目中如何进行选择?

PagingSource:用于加载有限的数据集(本地数据库)例如手机通讯录等等。
RemoteMediator:主要用来加载网络分页数据并更新到数据库中,当我们没有更多的数据时,我们向网络请求更多的数据,结合 PagingSource 当保存更多数据时会直接映射到 UI 上

注意:

RemoteMediator 目前是实验性的 API ,所有实现 RemoteMediator 的类都需要添加 @OptIn(ExperimentalPagingApi::class) 注解。

具体代码移步github:
https://github.com/stewForAni/Kotlin-Jetpack/tree/main/app/src/main/java/com/stew/kotlinjetpack/paging3RemoteMediator