56

我正在开发一个 Android 应用程序,它在 Android 平台提供的内置 SQLite 中存储不同类型的数据。

在应用程序中,我放置了一个“同步”按钮,该按钮用于在本地 SQLite 数据库与我的服务器上的在线 SQL Server 数据库之间同步数据。

解决此问题的解决方法是什么?此功能可以在 Google 日历中找到,您可以在手机上查看日历的活动,当您添加新活动并同步数据时,您也可以通过访问您的在线帐户查看更新的数据。

注意:我不想在线集中我的数据库,因为我还想让移动用户能够在没有互联网连接的情况下使用该应用程序。

4

1 回答 1

67

您应该查看 Android SDK 演示中的 SampleSyncAdapter 项目(使用同步适配器传输数据)。它向您展示了如何进行同步“Android 风格”,无需用户交互,只需手动点击同步按钮即可。

最重要的是,您需要编写能够为您的 SyncAdapter 提供自上次提交以来所有更改的“增量”的服务器软件。最基本的方法是在您的应用程序中保留“上次同步”时间戳,该时间戳必须来自服务器,否则您可能会因为客户端和服务器之间的时间差异而遇到麻烦。将所有时间戳标准化为 GMT 或您选择的任何时区,但请坚持该决定。如果您的应用程序需要在本地时间显示时间戳,那么您需要使用 Java Calendar 和 TimeZone 类将规范化的时间戳转换为本地时间。

您的应用程序还需要将更改的本地记录标记为“脏”,以便您的 SyncAdapter 知道它需要将这些更改或新记录上传到服务器。

您的服务器软件需要以下最低功能:

  • 更新现有记录功能
  • 添加新记录功能
  • 获取自上次同步以来的更新记录(应用程序提供时间戳)
  • 获取自上次同步以来的新记录(应用程序提供时间戳)

您可能还想通读一些 Google API(如 Google Calendar)以了解所有这些工作原理以及如何设计用于通信的服务器 API 接口。

于 2012-07-02T19:02:38.080 回答