如何将Android数据库与Web服务器数据库同步?

时间:2018-03-20 06:59:04

标签: android sqlite android-jobscheduler firebase-job-dispatcher

我是Android开发的新手,我正在创建一个用于练习目的的应用程序,我的应用程序只从网络服务器检索数据并将其复制到SQLite数据库,但我怎么知道是否有新数据我不有我的本地数据库或它已更新?有没有办法告诉Android“更新此记录并插入这些新的,如果没有什么都不做”?

是否必须创建同步适配器,或者我可以使用JobScheduler或Firebase JobDispatcher执行此操作?

3 个答案:

答案 0 :(得分:1)

有两个阶段:

  1. 使用推送通知在有新数据时通知您应用程序。这有助于实时同步数据。
  2. 您的数据库和服务器数据库应该有一些迹象来检测是否有新记录。例如,您可以使用增量ID,如果本地ID小于服务器ID,则可以检索更新的数据。这有助于在用户长时间关闭时同步数据,然后再次使用该应用程序。 / LI>

答案 1 :(得分:1)

  

如何知道我的本地数据库中是否有新数据,或者是否已更新?

那么,您的应用可以有2种机制来了解您是否需要从远程服务器获取新数据并保存到本地sqlite数据库。 PushPoll

现在,使用哪一个取决于具体情况。

轮询 - 假设用户正在查看项目列表。用户拉动刷新,然后您可以选择拨打服务器以检查是否有任何新数据。或者您可以选择不断轮询新数据,这可能不是一个好主意,因为它可能会消耗不必要的资源。

推送 - 当服务器有新数据时,它可以发送带有适当数据的FCM push notification。您可以在应用程序中处理推送通知,并使用新数据更新数据库。例如,如果您的本地数据库中只有一个表,则每行都有唯一的Id。您可以在FCM消息中包含id和其他相关信息,并更新本地数据库中的相应行。

体面阅读:Poll vs. Push - Any reasons to avoid Push Notifications?

答案 2 :(得分:0)

Syncadapter仅适用于这些操作,它的机制适合您的场景。

对于您的查询:

  

是否必须使用jobScheduler或Firebase JobDispatcher创建同步适配器?

您可以参考此answer