我正在尝试使用离线缓存和同步为Web服务制作Android To-Do客户端。
当您向服务器发送邮件时,Web服务以JSON格式返回有关服务器上待办任务的数据。
要在服务器上添加待办事项,您需要向服务器发送JSON
POST以及任务详细信息,然后它将返回任务UUID
。
我想实现某种类型的同步,以便我在离线时添加的任务被发送到服务器,当互联网可用时,来自服务器的数据将同步到应用程序(双向同步)。
目前,我已经编写了一个基于To-Do应用程序的基本内容提供程序,它不与服务器通信。我的问题是实现这种功能的最佳方法是什么?
我认为我需要从服务器获取JSON,将其推送到本地SQLite数据库,执行比较并查找未同步的项目并将其推送到服务器。我想我可以通过在ContentProvider中添加异步查询来做到这一点(不确定这是否是最佳方式)。
我应该编写自己的相同实现,还是SyncAdapter
可以完成所有这些魔法?我还应该考虑其他任何设计参数吗?
答案 0 :(得分:5)
用于插入SyncAdapter的库和演示应用程序,该应用程序演示Google Task API与本地Android SQLite数据库的双向同步 - 结帐此github repo:
https://github.com/sschendel/SyncManagerAndroid-DemoGoogleTasks
答案 1 :(得分:4)
我认为对您的问题最理想的是使用GCM Push将非同步的服务器数据推送到您的Android客户端。要同步客户端的SQL数据,您将知道尚未更新到服务器的内容以及设备何时进行网络连接时将此数据推送到服务器。客户端和服务器之间的更高层通信可以实现不同步的决策。以上假设您拥有自己的服务器,客户端将与之通信。
考虑到您不拥有服务器 - 您编写同步适配器的策略似乎很好。 这个link将帮助您了解同步适配器的复杂性