标签:android-syncadapter data-sharing android
我想在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-syncadapter,data-sharing,android 来源: https://codeday.me/bug/20190915/1805524.html
本站声明: 1. iCode9 技术分享网(下文简称本站)提供的所有内容,仅供技术学习、探讨和分享; 2. 关于本站的所有留言、评论、转载及引用,纯属内容发起人的个人观点,与本站观点和立场无关; 3. 关于本站的所有言论和文字,纯属内容发起人的个人观点,与本站观点和立场无关; 4. 本站文章均是网友提供,不完全保证技术分享内容的完整性、准确性、时效性、风险性和版权归属;如您发现该文章侵犯了您的权益,可联系我们第一时间进行删除; 5. 本站为非盈利性的个人网站,所有内容不会用来进行牟利,也不会利用任何形式的广告来间接获益,纯粹是为了广大技术爱好者提供技术内容和技术思想的分享性交流网站。