该资料整理了移动端分页的常见实现模式,主要面向 Android 与 iOS。
用途:为列表数据提供分页加载方案,覆盖网络请求、本地缓存与界面状态处理。
主要能力:
- Android Paging 3:依赖 androidx.paging 的 paging-runtime-ktx、paging-compose、paging-testing(版本 3.3.5)。
- PagingSource 实现:基于页码的加载,返回 LoadResult.Page,处理 prevKey/nextKey 与错误。
- 游标分页 PagingSource:以 String 为 key,通常不支持向后加载。
- Pager 配置:pageSize、prefetchDistance、enablePlaceholders、initialLoadSize、maxSize。
- ViewModel 集成:使用 debounce、distinctUntilChanged、flatMapLatest 与 cachedIn。
- Compose 中通过 collectAsLazyPagingItems 收集,处理 refresh、append、prepend 三种加载状态,支持重试与下拉刷新。
- RemoteMediator:结合网络与数据库,实现离线分页,含 RemoteKey 实体与 DAO。
- iOS 示例:基于 AsyncSequence 的分页 ViewModel 与 SwiftUI List 触发加载。
- API 响应格式:游标式与偏移量式两种 JSON 结构,以及 Kotlin 序列化模型。
使用方式:按资料中的依赖、PagingSource、Pager、ViewModel、Compose 或 SwiftUI 代码组织实现;命令与代码保持原样。
适用场景:实时信息流优先游标分页;需要总数或跳页时用偏移量分页;需要离线支持时用 RemoteMediator。
限制:资料未提供具体平台版本要求、性能数据、收费信息或完整项目配置,部分细节需结合项目实际调整。