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