Android Jetpack 之 Paging3的一些踩坑记录,flutter登录并保持会话

本文记录了在使用Android Jetpack Paging3时遇到的两个问题:如何实现分页跳转及界面不可见后重载数据。在Paging3中,通过触发刷新并自定义PagingSource的load方法来实现跳页。界面重新激活时数据重载的问题,原因是LiveData在界面不可见后默认等待一段时间才会取消协程,解决方案是使用cacheIn(viewModelScope)或lifecycleScope.launchWhenCreated结合flow来避免不必要的刷新。
摘要由CSDN通过智能技术生成

查不到api就去源码里看看。在 Pager 类注释中有提到,每个 PagingData 代表支持分页数据的快照,数据刷新时应该提供一个新的 PagingData 实例,其实在各个教程中并没有提到该如何实现跳页功能,通过这段描述就可以想到跳页功能就需要提供一个新的 PagingData 实例。

那么 PagingData 实例是在什么时候提供的,在类 PageFetcher 中有具体的实现

val flow: Flow<PagingData> = channelFlow {

refreshChannel.asFlow()

.onStart {

//…

}

.scan(null) { previousGeneration: PageFetcherSnapshot<Key, Value>?,

triggerRemoteRefresh ->

//…

PageFetcherSnapshot(

initialKey = initialKey,

pagingSource = pagingSource,

config = config,

retryFlow = retryChannel.asFlow(),

triggerRemoteRefresh = triggerRemoteRefresh,

remoteMediatorAccessor = remoteMediatorAccessor,

invalidate = this@PageFetcher::refresh

)

}

.filterNotNull()

.mapLatest { generation ->

PagingData(generation.pageEventF

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值