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