简短的问题:
使用使用页面+大小的API来加载新页面和BoundaryCallback
类的API从架构组件处理分页库上的数据库+网络的正确方法是什么?
研究与解释
目前,BoundaryCallback
用于架构组件的分页库中的类接收列表中元素的实例作为参数,而没有该元素所在位置的实际上下文。它发生在onItemAtFrontLoaded
和中onItemAtEndLoaded
。
我的 Api 应该接收页面和页面大小以加载下一个数据块。作为分页列表构建器的一部分添加的边界回调应该告诉您何时根据预取距离和页面大小加载下一页数据。
由于 Api 需要提供页码和页面大小,因此我看不到仅通过接收列表中提供的元素之一来将其发送到 Api 的方法onItemAtFrontLoaded
和onItemAtEndLoaded
。检查此链接中的 google 示例,他们使用最后一个元素的名称来获取下一个元素,但这不适合带有页面 + 大小的 Api。
他们还有另一个仅使用网络的示例PagedKeyedDatasource
,但没有关于如何将其与数据库和 BoundaryCallback 混合的示例或线索。
编辑:到目前为止,我发现的唯一解决方案是将最后加载的页面存储在共享首选项中,但这听起来像是一个肮脏的把戏。
有关官方输入,请参阅 https://github.com/googlesamples/android-architecture-components/issues/252#issuecomment-392119468。