将 Android 联系人与服务器同步 - 同步算法

发布于 2024-11-27 20:05:22 字数 668 浏览 0 评论 0原文

我想将我的 Android 设备的联系人与服务器同步(单向同步:根据设备的联系人数据库更新服务器)。

我看过 SampleSyncAdapter 示例: http://developer.android.com/resources/samples/SampleSyncAdapter/index.html

以及一个非常好的博客,可以帮助您理解拼图中的各个部分: http://ericmiles.wordpress.com/ 2010/09/22/connecting-the-dots-with-android-syncadapter/

我知道同步逻辑本身应该覆盖 onPerformSync()在扩展 AbstractThreadedSyncAdapter 的类中。

然而,我无法找到同步算法的示例。 例如,如何仅同步与上次同步的差异?我是否应该为最新同步的联系人保留缓存并将其与当前的联系人数据库进行比较?

I want to sync my android device's contacts with a server (1-way syncing: update server according to the device's contacts DB).

I've seen the SampleSyncAdapter example:
http://developer.android.com/resources/samples/SampleSyncAdapter/index.html

and a very good blog for understanding the pieces in the puzzle:
http://ericmiles.wordpress.com/2010/09/22/connecting-the-dots-with-android-syncadapter/

I understand that the sync logic itself is supposed to be in overriding onPerformSync() in a class extending AbstractThreadedSyncAdapter.

I was not, however, able to find an example for the syncing algorithm.
For instance, how do I sync just the diffs from the previous sync? am I supposed to keep a cache for the latest synced contacts and diff it with the current contacts DB?

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(1

一瞬间的火花 2024-12-04 20:05:22

理想情况下,您将大部分工作卸载到服务器上。

如果您谈论的是 REST api 类型的服务器,您有两个选择。

  1. 首先,获取数据集中行的索引,并传递一个参数作为请求的一部分,以过滤掉自某个日期以来更改的行,然后仅获取这些特定行。

如果他们的 REST API 不支持,

  1. 请在其自己的 URL 中获取每一行,并使用 HTML 标头字段 仅标识更改的内容。例如,请参阅“If-Modified-Since”字段。这将告诉服务器,如果您获取的页面未更改,则不要返回它,而是发送 304(未修改)响应。如果是 304,那么您就知道不需要更改数据库。

Ideally, you offload much of that work to the server.

If you're talking about a REST api type of server, you have two options.

  1. First, go fetch an index of the rows in your dataset, and pass a parameter as part of the request to filter out rows changed since a date, and then fetch those specific rows only.

If that isn't supported by their REST API,

  1. Fetch each row at its own URL, and use HTML header fields to identify only what's changed. See "If-Modified-Since" field for example. This will tell the server that if the page you fetch is unchanged, not to bother returning it, but rather to send a 304 (not modified) response. If it's 304, you know you don't need to change your DB.
~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文