-2

我是 Android 开发新手,我正在创建一个用于练习目的的应用程序,我的应用程序仅从网络服务器检索数据并将其复制到 SQLite 数据库中,但我如何知道我的数据库中是否有新数据本地数据库还是已更新?有没有办法告诉Android“更新这些记录并在没有任何操作的情况下插入这些新记录”?

创建一个同步适配器是必须的,还是我可以用JobSchedulerFirebase来做JobDispatcher

4

3 回答 3

3

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

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

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

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

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

体面的阅读:投票与推送 - 有什么理由避免推送通知?

于 2018-03-20T07:08:13.067 回答
2

有2个阶段:

  1. 当有新数据时,使用推送通知通知您的应用程序。这将有助于实时同步数据。
  2. 您的数据库和服务器数据库应该有一些标志来检测是否有新记录。例如,你可以使用增量id,如果本地id小于服务器的id,则该检索更新的数据。这将有助于在用户长时间关闭然后再次使用应用程序时同步数据。
于 2018-03-20T07:06:08.040 回答
0

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

对于您的查询:

是否必须创建同步适配器,或者我可以使用 jobScheduler 或 Firebase JobDispatcher 来完成?

你可以参考这个答案

于 2018-03-20T07:04:32.997 回答