如何在SQLBrite通知时获取数据库表更改的上下文(例如,哪些行已更改以及是否已添加或删除?)

时间:2015-10-19 15:37:56

标签: android-sqlite sqlbrite

示例用例:我们有一个可以更改状态(已读/未读)的消息列表。新邮件可以出现在列表中的任何位置,也可以通过其他方式在本地或从后端删除邮件。

我们现在已经实现了这一点,我们使用SQLBrite作为我们所知道的本地数据缓存的包装。

  1. 通过网络发送远程API调用来完成操作(删除,更改消息状态),或者我们轮询后端以查看是否有任何更改。
  2. SQLBrite缓存更新为远程API调用结果的副作用,包括用户启动的操作和定期轮询更新。此时,我们确切知道更改了什么,我们执行INSERT,UPDATE或DELETE来更新缓存。
  3. UI观察者被告知重新执行消息表的SQLBrite查询,并且UI会自动更新以响应本地缓存中的更改。例如,使用挂起删除设置动画消息。
  4. 问题是,处理第3步的最佳方法是什么?我们正在执行对搜索新邮件,删除邮件和更新邮件的昂贵搜索。我们必须运行整个查询,构建一组消息ID,然后将其与我们在UI模型中了解的消息ID进行比较。当我们确切知道UI小部件中需要更新的内容时,我们正在重构我们在步骤2中获得的信息,但该信息未在步骤3中传递给我们的观察者。

    有没有更好的方法来构建这个,以便我们可以避免昂贵的对帐步骤?

0 个答案:

没有答案