我是 Android 开发新手,我正在创建一个用于练习目的的应用程序,我的应用程序仅从网络服务器检索数据并将其复制到 SQLite 数据库中,但我如何知道我的数据库中是否有新数据本地数据库还是已更新?有没有办法告诉Android“更新这些记录并在没有任何操作的情况下插入这些新记录”?
创建一个同步适配器是必须的,还是我可以用JobScheduler
Firebase来做JobDispatcher
?
我是 Android 开发新手,我正在创建一个用于练习目的的应用程序,我的应用程序仅从网络服务器检索数据并将其复制到 SQLite 数据库中,但我如何知道我的数据库中是否有新数据本地数据库还是已更新?有没有办法告诉Android“更新这些记录并在没有任何操作的情况下插入这些新记录”?
创建一个同步适配器是必须的,还是我可以用JobScheduler
Firebase来做JobDispatcher
?
我如何知道我的本地数据库中是否有新数据或已更新?
好吧,您的应用程序可以有 2 种机制来了解您是否需要从远程服务器获取新数据并保存到本地sqlite
数据库。要么Push
要么Poll
。
现在,使用哪一个将取决于情况。
轮询- 假设用户正在查看项目列表。用户拉动刷新,然后您可以选择调用服务器以检查是否有任何新数据。或者您可以选择不断地轮询新数据,这可能不是一个好主意,因为它可能会消耗不必要的资源。
推送- 当服务器有新数据时,它可以发送带有适当数据的FCM 推送通知。您可以在应用程序中处理推送通知并使用新数据更新数据库。例如,如果您的本地数据库中只有一个表,则每一行都有唯一的 ID。您可以id
在 FCM 消息中包含 和其他相关信息,并更新本地数据库中的相应行。
体面的阅读:投票与推送 - 有什么理由避免推送通知?
有2个阶段:
Syncadapter 仅适用于这些操作,它的机制最适合您的场景。
对于您的查询:
是否必须创建同步适配器,或者我可以使用 jobScheduler 或 Firebase JobDispatcher 来完成?
你可以参考这个答案