示例用例:我们有一个可以更改状态(已读/未读)的消息列表。新邮件可以出现在列表中的任何位置,也可以通过其他方式在本地或从后端删除邮件。
我们现在已经实现了这一点,我们使用SQLBrite作为我们所知道的本地数据缓存的包装。
问题是,处理第3步的最佳方法是什么?我们正在执行对搜索新邮件,删除邮件和更新邮件的昂贵搜索。我们必须运行整个查询,构建一组消息ID,然后将其与我们在UI模型中了解的消息ID进行比较。当我们确切知道UI小部件中需要更新的内容时,我们正在重构我们在步骤2中获得的信息,但该信息未在步骤3中传递给我们的观察者。
有没有更好的方法来构建这个,以便我们可以避免昂贵的对帐步骤?