使用 SyncAdapter 在 Android 上进行双向同步

Bi-Directional Sync on Android Using SyncAdapter

我打算在我的 android 应用程序上创建 sqlite table。数据来自服务器通过 web 服务。

我想知道最好的方法是什么。 我应该将数据从 web 服务传输到 sqlite db 文件中并合并它,还是应该将所有数据作为 soap 请求获取并将其解析为 table,或者我应该使用 rest 调用。

数据的一般大小为 2MB,100 列。

请告知我可以快速获取此数据的最佳情况,同时减少设备负载。

我的工作流程是:

  1. 下载一组20000个地址并将它们保存到设备sqlite数据库。此操作只有一次,当您 运行 第一次使用该应用程序时或您想要刷新整个应用程序数据时。
  2. 每当服务器发生变化时更新此记录。
  3. 现在我可以在 JSON、XML 中或作为纯 SqLite 文件从服务器获取此数据。我想知道将此数据存储到 Android 数据库的最快方法是什么。

我尝试了上述所有方法,发现从服务器获取数据库文件并将该数据复制到数据库比获取 XML 或 JSON 中的数据并解析它更快。请告知我是对还是错。

如果您打算使用同步适配器,那么您将需要实现一个内容提供程序(或至少一个存根)和一个验证器。 Here 是一个很好的例子,您可以效仿。

此外,您还没有更多地解释这种网络服务的用例是什么来决定建议使用哪种网络服务架构。但是 REST 是一种很好的编写服务的方式,并且由于数据格式效率的原因,建议使用 JSON 而不是 XML(或者更好地给 protocol-buffer 一个机会)

是的,同步适配器更好用,因为它们已经提供了一组很棒的功能,否则当作为后台服务编写时(例如,定期同步、自动同步、指数退避等),您将希望实现这些功能

为了减少设备上的负载,您可以实施由内容提供商支持的同步适配器。当您从服务器 upload/download 数据时,您 serialize/deserialize 数据。当您需要从服务器保存数据时,您可以在内容提供程序中使用 bulkInsert() 方法并将所有数据保存在一个事务中