我想在Android应用程序和服务器之间同步数据(例如数据库记录,媒体).如果您已经看过Evernote或类似的应用程序,您当然明白我的意思.
我有一些问题(想象一下我们想要同步DB记录):
>每个用户都有自己的一部分服务器空间(例如Evernote或DropBox).也许用户通过手机创建新记录并在服务器中创建新记录.我如何将这些记录匹配在一起?如果有相同ID的记录你建议我使用哪种算法?
>除了JsON,手机设备和服务器之间有没有办法发送数据?
>如果SyncAdapter和ContentProvIDer可以解决我的问题,请完整地为我解释. (如果您可以向我提供一些示例或教程或任何建议或关键字,以帮助扩大/指导我的搜索也将受到赞赏).
解决方法:
我将尝试通过解决更大的问题来回答您的所有问题:如何在网络服务器和AndroID应用之间同步数据?
在您的网络服务器和AndroID应用程序之间同步数据需要AndroID设备上的几个不同的组件.
持久存储:
这就是您的手机实际存储从网络服务器接收的数据的方式.实现此目的的一种可能方法是编写由sqlite数据库支持的自定义ContentProvIDer.内容提供商的体面教程可以在这里找到:http://thinkandroid.wordpress.com/2010/01/13/writing-your-own-contentprovider/
ContentProvIDer定义了一个与存储数据交互的一致接口.如果您愿意,它还可以允许其他应用程序与您的数据进行交互. ContentProvIDer的后面可能是sqlite数据库,Cache或任意存储机制.
虽然我肯定会建议将ContentProvIDer与sqlite数据库一起使用,但您可以使用任何您想要的基于Java的存储机制.
数据交换格式:
这是您用于在Web服务器和AndroID应用程序之间发送数据的格式.目前最流行的两种格式是XML和JsON.在选择格式时,您应该考虑哪种序列化库可用.我知道有一个非常棒的Json序列化库,名为gson:https://github.com/google/gson,虽然我确信XML存在类似的库.
同步服务
您需要某种异步任务,它可以从您的服务器获取新数据并刷新移动内容以反映服务器的内容.每当您对内容进行本地更改并希望反映这些更改时,您还需要通知服务器. AndroID提供SyncAdapter模式作为轻松解决此模式的方法.您需要注册用户帐户,然后AndroID将为您执行许多魔术,并允许您自动同步.这是一个很好的教程:http://www.c99.org/2010/01/23/writing-an-android-sync-provider-part-1/
至于如何识别记录是否相同,通常您将创建具有唯一ID的项目,您将其存储在AndroID设备和服务器上.您可以使用它来确保您引用相同的参考.此外,您可以存储列属性,如“updated_at”,以确保您始终获取最新鲜的数据,或者您不会意外地写入新写入的数据.
总结以上是内存溢出为你收集整理的在Android App和网络服务器之间同步数据全部内容,希望文章能够帮你解决在Android App和网络服务器之间同步数据所遇到的程序开发问题。
如果觉得内存溢出网站内容还不错,欢迎将内存溢出网站推荐给程序员好友。
欢迎分享,转载请注明来源:内存溢出
评论列表(0条)