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

如何将Android数据库与web服务器数据库同步?,android,sqlite,android-jobscheduler,firebase-job-dispatcher,Android,Sqlite,Android Jobscheduler,Firebase Job Dispatcher,我是Android开发新手,我正在创建一个应用程序用于实践,我的应用程序只从Web服务器检索数据并将其复制到SQLite数据库中,但我如何知道我的本地数据库中是否有新数据,或者该数据是否已更新?有没有办法告诉Android“更新这些记录并插入新的记录,如果没有其他记录,请什么都不做” 创建syncadapter是必须的还是我可以用JobScheduler或FirebaseJobDispatcher?syncadapter仅用于这些操作,它的机制最适合您的场景 对于您的查询: 创建syncadap

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


创建syncadapter是必须的还是我可以用
JobScheduler
或Firebase
JobDispatcher

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

对于您的查询:

创建syncadapter是必须的还是我可以用jobScheduler或Firebase JobDispatcher来完成

您可以参考此

有两个阶段:

  • 使用推送通知在有新数据时通知应用程序。这将有助于实时同步数据
  • 您的数据库和服务器数据库应该有一些标志来检测是否有新记录。例如,您可以使用增量id,如果本地id小于服务器的id,则是时候检索更新的数据了。这将有助于在用户长时间关机后同步数据,然后再次使用应用程序
  • 我如何知道本地数据库中是否有新数据,或者这些数据是否已更新

    嗯,有两种机制可以让你的应用程序知道是否有新数据需要从远程服务器获取并保存到本地
    sqlite
    数据库。
    Push
    Poll

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

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

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


    体面阅读:

    您可以切换到内置同步功能的Realm Sync或Couchbase Mobile(如果您不想实际使用Firebase)。但是,SQLite也不是。如果我在webserver数据库中更新一条记录,我如何能够检测到该特定记录已更改,并且需要在本地数据库中更新?对于第一个阶段,非常简单,只需发送一个推送通知,以通知客户端已更改记录的id。对于第二阶段,可以向所有记录添加标志。如果为false,则没有更改。如果这是真的,就会有变化。当客户端请求更新时,此标志将重置为false。