Android 为什么LoadParams.requestedLoadSize会将指定的页面大小返回给LivePagedListBuilder乘以3?

Android 为什么LoadParams.requestedLoadSize会将指定的页面大小返回给LivePagedListBuilder乘以3?,android,pagination,kotlin,android-architecture-components,Android,Pagination,Kotlin,Android Architecture Components,我正在使用以下方法创建页面列表: LivePagedListBuilder(数据源工厂,20) 在我的PageKeyedDataSource实现中,loadParams.requestedLoadSize返回60。我尝试使用其他数字,似乎loadParams.requestedLoadSize总是返回我指定的页面大小乘以三 有人知道为什么会这样吗 我尝试使用其他数字,似乎loadParams.requestedLoadSize总是返回我指定的页面大小三次 这是因为loadInitial上的par

我正在使用以下方法创建
页面列表

LivePagedListBuilder(数据源工厂,20)

在我的
PageKeyedDataSource
实现中,
loadParams.requestedLoadSize
返回60。我尝试使用其他数字,似乎
loadParams.requestedLoadSize
总是返回我指定的页面大小乘以三

有人知道为什么会这样吗

我尝试使用其他数字,似乎loadParams.requestedLoadSize总是返回我指定的页面大小三次

这是因为
loadInitial
上的
params.requestedLoadSize
不同

在LivePagedListBuilder的第二个参数上传递的是pageSize,而不是loadInitial

LivePagedListBuilder(dataSourceFactory, 20)
我在RxPagedListBuilder上注意到了相同的行为

RxPagedListBuilder(dataSourceFactory, 20)
正如您所猜测的,loadInitial大小是pageSize的三倍

如果要设置loadInitial,必须将
PagedList.Config
传递给LivedPagedListBuilder或RxPagedListBuilder的第二个参数

RxPagedListBuilder(dataSourceFactory,
    PagedList.Config.Builder()                
    .setInitialLoadSizeHint(INITIAL_LOAD_SIZE)
    .setPageSize(PAGE_SIZE)
    .build()
).buildObservable()

这是
PagedList
的默认行为。如果检查的源代码是否为
loadInitial
,页面大小将乘以
DEFAULT\u INITIAL\u page\u乘数
,该乘数的值为
3
,在
loadInitial
之后,所有调用都将使用
params.requestedLoadSize
value

,因为默认值
PagedList.Config
强制-如果您不喜欢,请使用
LivePagedListBuilder(Factory dataSourceFactory,PagedList.Config配置)
it@pskink你说得对。原来
PagedList.Config
setPageSize
setInitialLoadSizeHint
,后者被用作初始页面大小。很好的选择,但我认为它是违反直觉的,让它不同于作为默认值的通知页面大小。无论如何,非常感谢。你介意把你的评论作为一个答案发布,这样我就可以接受了吗?哦,发布一个带有详细额外信息的自我回答。我想知道pagesize和InitialidaSizeHint有什么用。即使我将页面大小设置为10,并在第一次调用时从服务器发送20个数据,它也会给我一组20个。那么这个页面大小是用来做什么的呢?谢谢,我还试着调试为什么第一次加载时这个数字会增加3倍。