【问题标题】:Desiging an Android App with Offline Sync. Should I use SyncAdapter?使用离线同步设计 Android 应用程序。我应该使用同步适配器吗?
【发布时间】:2014-11-21 02:18:08
【问题描述】:

我正在尝试为 Web 服务制作一个 Android To-Do 客户端,具有离线缓存和同步功能。

当您向其发送发布消息时,Web 服务会以 JSON 格式返回有关服务器上待办事项的数据。 要在服务器上添加待办事项,您需要向服务器发送带有任务详细信息的JSON POST,服务器将返回一个任务UUID

我想实现某种类型的同步,以便我在离线时添加的任务发送到服务器,并在互联网可用时将服务器中的数据同步到应用程序(2-way Sync)。

目前,我已经编写了一个基于内容提供程序的基本待办事项应用程序,它不与服务器通信。我的问题是实现此类功能的最佳方式是什么?

计划尝试

我认为我需要从服务器获取 JSON,将其推送到本地 SQLite DB,执行比较并找到未同步的项目并将它们推送到服务器。我想我可以通过在我的 ContentProvider 中添加异步查询来做到这一点(不确定这是否是最好的方法)。

问:

我应该编写自己的实现还是SyncAdapter 可以完成所有这些魔术?还有其他我应该考虑的设计参数吗?

【问题讨论】:

  • 我也在寻找同样的东西。

标签: android android-syncadapter


【解决方案1】:

对于插入 SyncAdapter 的库和演示 Google Task API 到本地 Android SQLite db 的 2 路同步的演示应用程序 - 查看此 github 存储库:

https://github.com/sschendel/SyncManagerAndroid-DemoGoogleTasks

【讨论】:

    【解决方案2】:

    我认为最适合您的问题的是使用 GCM Push 将不同步的服务器数据推送到您的 android 客户端。为了同步客户端的 SQL 数据,您会知道哪些内容尚未更新到服务器,并且每当设备联网时,将此数据推送到服务器。客户端和服务器之间的更高层通信可以实现不同步的决定。以上假设您有自己的服务器,您的客户端将与之通信。

    考虑到您不拥有服务器 - 您编写同步适配器的策略似乎不错。 这个link 将帮助您了解同步适配器的复杂性

    【讨论】:

    • 我忘了提到我不拥有 Web 服务,我正在访问一个为我提供 JSON 数据的 API。我不太确定 GCM 部分能否在这种情况下工作?
    • 哦,好吧,在这种情况下,我认为您应该编写自己的 SyncAdapter 以有效地完成它。正如您所说,它不是您自己的服务器,No Push 会起作用。
    • 非常感谢您将我链接到那篇内容丰富的帖子。解决了我的问题。
    猜你喜欢
    • 1970-01-01
    • 2010-10-14
    • 2017-01-14
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2012-09-11
    • 2015-01-22
    相关资源
    最近更新 更多