使用分页库时如何同时更新网络状态和数据

时间:2018-12-05 07:50:26

标签: android android-paging android-mvvm

我现在正在使用Paging Library和Room,但是在更新网络状态和列表时遇到了麻烦。在我的项目中,使用PagingWithNetworkSample的情况与DbRedditPostRepository大致相同。

UI观察 Listing.networkState (SubredditBoundaryCallback.networkState)以更新加载状态,并观察 Listing.pagedList 并将其提交给PagedListAdapter来更新数据。

向下滚动RecyclerView并收到响应时,在大多数情况下,事情按以下顺序发生。

  1. Callback .onResponse被呼叫。
  2. 异步调用DbRedditPostRepository.insertResultIntoDb将数据插入db。
  3. 呼叫Request.Callback.recordSuccess,它会更新SubredditBoundaryCallback.networkState。
  4. UI收到Listing.networkState的通知,并删除加载图标
  5. 经过短暂但引人注目的时间后,数据库更新导致DataSource无效并且数据已附加到RecyclerView。

由于更新加载和数据之间存在时间差异,因此UI的行为类似于this,删除加载后RecyclerView向下滚动,然后追加数据,因此看不到新数据。

我要存档的是同时更新网络状态和数据,因此UI可以像this一样工作。

考虑过

  1. 在通知数据更改时更新网络状态,但是如果所有数据都是重复的,则数据更改可能不会发生,并且如果有多个更新,则很难通过正确的数据更新来连接网络状态。
  2. 只要将网络状态写到db并同时得到通知,就可以正常工作,但是有点丑陋,这是我的最后选择。

任何想法都会受到赞赏。

0 个答案:

没有答案