如何在不同设备之间同步数据

25

我计划实现一个应用程序,但我遇到了一个不知道什么是最佳方法的问题。

场景:

我有一个应用程序,在其中制作待办事项列表,并添加了3个项目。 我使用我的手机进行此操作。 然后,我拿出平板电脑,想要继续添加另一个任务。 然后过一段时间后我拿出妻子的手机并想要添加2个新任务。

基本上,我希望有一种非常简单的方法将任务存储在云端,并能够与应用程序同步。

我看到两种可能的方法:

  • 拥有具有数据库和网络服务调用的Web服务器。 这具有需要付费托管、学习额外mysql + web服务技术的缺点。

  • 以某种方式将数据存储在云端,并允许应用程序通过登录访问存储文件的帐户。 我在这里考虑类似Google Drive / Dropbox的东西。 但我不知道如何只同步更新的值,而不是整个文件。 因为我认为,如果我将所有任务存储在一个文件中,则每次更新文件时,我都需要完全上传它,这不是最佳方法。

我开放接受任何建议。 您会推荐哪种方法?


Google Cloud Save听起来像是完美的解决方案,但它尚未发布... http://developer.android.com/google/gcs/index.html - Leo K
嗨 @Alin,我也有类似的需求,你最终使用了什么? - S. B.
嗨,好吧,那确实是很久以前的事了。最终我没有按预期完成这个项目。我想如果现在要做的话,我会仔细研究下面的答案中提到的Firebase Firestore。 - Alin
5个回答

16

2
我认为你需要在两个设备上拥有相同的账户,而这对于“拿我的妻子的手机”可能并不成立。 - TWiStErRob
@TWiStErRob 这不就意味着需要使用相同的帐户登录设备吗? - CamHart
2
@CamHart 没错。我认为 TWiStErRob 的观点是,OP 不太可能在他妻子的手机上拥有自己的账户。因此,虽然这可能是一种在设备之间同步数据的简单方法,但并不一定满足问题的所有要求。 - Mike

9
我建议您考虑使用 Google App Engine 或者 Amazon Web Services。它们都提供每月免费的使用额度,如果超过了限制则需要支付费用,但很可能您会在免费阶段使用一段时间。
目前来看,AWS比GAE更成熟,而且在我进行研究时,似乎比GAE更容易实现。

4
谢谢您的建议。此外,DropBox Datastore API似乎是一个非常好的免费替代方案... - Alin

3
请查看同步适配器的新培训课程:http://developer.android.com/training/sync-adapters/index.html,了解从设备向服务器发送数据的基础知识。
在Android设备上,建议您使用内容提供程序来存储任务。这有助于您跟踪自上次同步以来的更新。然后,在同步期间查询提供程序,仅发送已更新的数据,并将数据存储在服务器上。
您应该在设备上存储上次更新时间,以便判断服务器是否包含尚未在设备上的数据。请记住,如果想要所有设备保持同步,您还需要下载任务。

1
你可以尝试使用谷歌的Firebase。Firebase为Android和iOS设备提供SDK支持离线和同步功能。Firebase还提供对象存储服务。创建Firebase应用比你想象的要容易得多。请查看Firebase的Firestore服务

0
您可以查看我们的Rethync框架(带源代码的免费软件)。使用它,您可以简化检测修改并仅同步更新数据的任务。此外,Rethync提供了客户端和服务器端API,因此您可以创建自己的服务(并将其托管在Web端)或编写自己选择的云服务的传输(我们将在未来提供一些传输,它们正在开发中)。

看起来这似乎没有通过预发布阶段。它还在积极开发中吗?有任何更新吗?有路线图吗? - IInspectable
@IInspectable 它是稳定且完全功能的,并包含文档。如果有问题报告,我们将相应地更新实现。至于未来的发展 - 引擎在其当前状态下是自包含的,即任何新功能都不适合同步引擎的当前概念。另一方面,像TLS这样的东西已经存在(通过使用支持TLS的传输)。 - Eugene Mayevski 'Callback

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接