Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/api/5.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Android SyncAdapter:从服务器端删除项目时如何同步?_Android_Android Syncadapter - Fatal编程技术网

Android SyncAdapter:从服务器端删除项目时如何同步?

Android SyncAdapter:从服务器端删除项目时如何同步?,android,android-syncadapter,Android,Android Syncadapter,在我的应用程序中,用户可以订购一些东西,稍后他也可以取消它,但当用户尝试取消时,我会用存储在本地数据库中的取消原因列表填充一个对话框,并使用syncadapter从服务器同步。我们也有管理仪表板,我们的管理员可以添加或删除取消原因。我可以同步新添加的取消原因,但如何告诉syncadapter某些原因已被删除 我当前的同步工作方式。 现在我有了一个名为get\u cancel\u reasons的api,我使用syncadapter点击它,然后在参数处发送last\u updated\u,该参数在

在我的应用程序中,用户可以订购一些东西,稍后他也可以取消它,但当用户尝试取消时,我会用存储在本地数据库中的取消原因列表填充一个对话框,并使用
syncadapter
从服务器同步。我们也有管理仪表板,我们的管理员可以添加或删除取消原因。我可以同步新添加的取消原因,但如何告诉
syncadapter
某些原因已被删除

我当前的同步工作方式。
现在我有了一个名为
get\u cancel\u reasons
的api,我使用
syncadapter
点击它,然后在参数处发送
last\u updated\u,该参数在本地数据库中上次更新我的取消原因是什么时候通过的。从服务器端,我将客户端
last\u updated\u at
与我的服务器
last\u updated\u at
字段进行比较。若它落后于服务器,那个么我会发送新添加的取消原因。现在,如果我从服务器仪表板中删除一个原因,如何管理

我尝试过的

我没有从服务器上删除原因,而是保留了数据和一个表示不活动的标志。但问题是,如果数据更改非常频繁,那么服务器数据库表中将有大量不必要的数据

我看到两种选择:

  • 始终发送所有取消原因,并从客户端数据库中删除尚未从服务器接收到的所有内容。不知道你有多少取消的理由,但如果没有那么多,我就用这个。您可以使用etag和“if none match”头或类似的机制来避免在没有任何更改的情况下浪费任何数据

  • 继续您的想法,标记已删除的原因。如果您担心服务器上的数据浪费(这些原因的更改频率如何?),您可以定期删除非常旧的取消原因,然后返回到1。如果客户端在数据库中最早更新日期之后的
  • 日期发送上次更新日期。当然,在这种情况下,客户机应该准备好接收完整的响应,而不是更改集


    Exchange,它描述了WebDAV协议中高效同步的一种非常类似的机制。

    不知为何这样:@ SatelliteSD,我理解但认为您删除了服务器DB中的某些项。我现在应该向客户发送什么数据?