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

时间:2015-01-27 09:19:39

标签: sqlite synchronization android-contentprovider android-syncadapter

我打算在我的Android应用程序上创建sqlite表。数据来自服务器通过webservice。

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

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

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

我的工作流程是:

  1. 下载一组20000个地址并将其保存到设备sqlite数据库。当您第一次运行应用程序或想要刷新整个应用程序数据时,此操作只有一次。
  2. 如果服务器发生更改,请更新此记录。
  3. 现在,我可以使用JSON,XML或服务器的纯SqLite文件获取此数据。我想知道将这些数据存储到Android数据库的最快方法是什么。
  4. 我尝试了上述所有方法,并且发现从服务器获取数据库文件并将数据复制到数据库比使用XML或JSON获取数据并解析它更快。请告知我是对还是错。

1 个答案:

答案 0 :(得分:1)

如果您计划使用同步适配器,则需要实现内容提供程序(或至少一个存根)和身份验证器。 Here是一个很好的例子,你可以遵循。

此外,您还没有详细说明此类Web服务的用例是什么来决定建议的Web服务架构。但REST是编写服务的好方式,因为数据格式效率(或更好地给protocol-buffer一次),建议使用基于XML的JSON是可取的

是的,同步适配器最好使用,因为它们已经提供了一组很好的功能,否则当你作为后台服务编写时(例如,周期性同步,自动同步,指数退避等)

要减少设备负载,您可以实现内容提供商支持的同步适配器。从服务器上载/下载数据时,您可以序列化/反序列化数据。当您需要从服务器保留数据时,您可以在内容提供程序中使用 bulkInsert()方法并在事务中保留所有数据