1

在过去的几天里,我对Android 架构组件感到很熟悉,并且我对用于处理和显示来自远程源的数据列表的分页库最感兴趣。为了获得最佳的用户体验,最好先将数据加载到数据库中,在这种情况下,Room然后使用 pagingLibrary 和适配器将其显示在 recyclerview 中。我担心的是,假设一个 api 甚至有 1000 条记录或一个 twitter 提要,所有这些数据都必须通过 db 传递到 UI,如何处理设备上的存储?将所有数据存储在设备上是一个坏主意。有没有办法删除“陈旧”数据或推荐的方法是什么?

编辑: android 团队一直在为分页库开发 V3 这里是一个链接到一篇文章的链接,它可能会在这里提供更多的光文章

4

1 回答 1

2

RemoteMediator有一个initialize保证在加载开始之前完成的 API。您可以重写initialize以检查数据陈旧性以执行您需要的任何设置(例如修剪旧条目),但如果只有 1000 行会导致严重的性能问题,我个人会感到有些惊讶。

对于诸如这些PagingSource查询的热代码路径,您可以查看 androidx.benchmark 以确定它是否值得优化。

编辑:如果您不想在刷新时保留任何旧推文,您可能需要考虑在成功的远程刷新时简单地清除表格,因为这是最简单的方法。initialize适用于需要手动修剪/设置/过时检查的情况(例如,您可以检查数据的年龄并决定是否要刷新),但只需在插入新页面之前清除远程刷新效果很好,因为无论如何您都希望重新开始分页。确保在同一个事务中执行 clear + insert 操作,这样您就不会因数据库更新而导致两次无效!

于 2020-07-12T08:31:02.070 回答