需要将远程数据库与存储同步的解决方案

时间:2019-06-26 18:52:37

标签: android retrofit

我有一个Android应用程序,对此我无法弄清楚。让我描述一下当前情况:

这是一个可从REST API检索事件的应用程序。用户可以保存(或收藏)这些事件并将其存储在本地存储中,并且所有保存的事件都需要显示在专用页面上。 我希望用户在没有互联网连接的情况下能够使用该应用程序。所有事件都需要保存在本地并在连接到Internet时进行更新。

我的事件对象有一个“收藏夹”变量,默认情况下为false(当然,默认情况下不会保存事件),并且在用户保存事件时为true。 事件页面从布尔值为true的本地存储中获取所有事件对象。

到目前为止,我很好地实现了这一目标。

现在针对实际问题: 当用户再次连接到Internet时,应通过通过API检索的事件来更新所有本地保存的事件。但是因为默认情况下“ favourited”的默认值为false,所以刷新页面时,每个已保存的事件都将再次变为false。

我应该怎么做?

一些细节: 对于本地存储,我使用RoomDatabase,对于API,我使用改进。 我知道OnConflictStrategy,但没有更新选项。我曾考虑过使用OnConflictStrategy.IGNORE,但这意味着如果事件被更新,用户将不会收到更新。

欢迎任何想法或建议

预先感谢

1 个答案:

答案 0 :(得分:0)

   public class UserFavorite{
       boolean favorite=false;
   }

   public class Event{
       //other fields in Event class
       @Embedded
       UserFavorite userFavorite; 
   }

请考虑使用Event类从API保存事件详细信息,并且此Event类具有带有用户收藏夹标志的字段类(UserFavorite),默认值为false。

因此,您可以随时更改用户收藏夹标志,并且不会受到使用API​​更新的影响。