我正在开发一个Android应用程序,它在Android平台提供的内置SQLite中存储不同类型的数据。
在应用程序内部我放置了一个“同步”按钮,该按钮应该在本地SQLite数据库与我服务器上的在线SQL Server数据库之间同步数据。
处理此问题的解决方法是什么?此功能可在Google日历中找到,您可以在其中查看手机上的日历活动,当您添加新活动和同步数据时,您也可以通过转到在线帐户查看更新的数据。
注意:我不想在线集中我的数据库,因为我还希望让移动用户能够在没有互联网连接的情况下使用该应用程序。
答案 0 :(得分:66)
您应该查看Android SDK演示中的SampleSyncAdapter项目(Transferring Data Using Sync Adapters)。 它向您展示了如何进行同步“Android风格”,无需通过手动点击同步按钮进行用户交互。
最重要的是,您需要编写能够为SyncAdapter提供自上次提交以来所有更改的“增量”的服务器软件。最基本的方法是在应用程序中保留“最后同步”的时间戳,该时间戳必须来自服务器,否则由于客户端和服务器之间的时间差异,您可能会遇到麻烦。将所有时间戳标准化为GMT或您选择的任何时区,但坚持该决定。 如果您的应用需要以本地时间显示时间戳,则需要使用Java Calendar和TimeZone类将规范化时间戳转换为本地时间。
您的应用还需要将更改的本地记录标记为“脏”,因此您的SyncAdapter知道它需要将这些已更改的或新记录上传到服务器。
您的服务器软件需要以下最低功能:
您还可以阅读一些Google API(如Google日历),了解所有这些工作原理以及如何为通信设计服务器API接口。