【问题标题】:Invalidating pages using android paging library使用android分页库使页面无效
【发布时间】:2018-01-30 11:00:56
【问题描述】:

我正在使用 alpha5 中的分页库。 我的问题是,我想使用 android 分页库加载的列表经常被更改。就像每分钟多次一样。当我向下滚动并加载第 1、2、3 页(atm 我为此使用 PositionalDataSource)时,可能会发生第一页在向下滚动时无效。

尝试想象第 1 页由于某种原因无效,并且用户在第 5 页(与第 1 页不在同一屏幕上),现在他再次向上滚动到第 1 页。分页库正在从缓存中获取数据,所以有旧数据,这很糟糕。

有没有办法使页面无效? 我希望当我向上滚动时,会有一个(可选的)调用(可能在 DataSource 本身中)询问来自缓存的数据是否仍然有效。

如果是这样,一切都很好,如果不是,请使用方法重新加载您的源(数据库、网络等)

【问题讨论】:

  • 如果你的DataSource发生变化,唯一通知外界的方法就是调用DataSource#invalidate()方法
  • 我不想重新加载整个列表,而是“旧”页面。
  • 您不能这样做,请参阅DataSource javadocs,部分:Updating Paged Data
  • 您好@andre,您成功使用 PositionalDataSource 了吗?在我的示例中,它在初始加载后停止...
  • 除了缺少的功能,它按预期工作,是的

标签: android android-architecture-components android-paging


【解决方案1】:

如 pskink 所述,如果您的 DataSource 发生更改,通知外界的唯一方法是调用 DataSource#invalidate() 方法。如果您不想重新加载未更改页面的原因是因为您使用了一些慢速数据源(例如在网络上),您应该使用 Room 缓存数据。您将能够仅更新缓存中已更改的部分,您无需编写自己的数据源,并且 Room 提供的数据源将在缓存更改时自行失效,以便更新显示。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2018-04-21
    • 1970-01-01
    相关资源
    最近更新 更多