android - 如何将 Android 数据库与在线 SQL Server 同步?

标签 android sql sqlite synchronization

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

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

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

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

最佳答案

您应该查看 Android SDK 演示 (Transferring Data Using Sync Adapters) 中的 SampleSyncAdapter 项目。 它向您展示了如何进行“Android 风格”的同步,无需用户随时手动点击同步按钮进行交互。

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

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

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

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

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

关于android - 如何将 Android 数据库与在线 SQL Server 同步?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/11299208/

相关文章:

sql - 如何使postgresql结果唯一

sqlite - 反规范化表并追加

python - SQLite 表名参数

javascript - Nativescript WebView,在 Android 上导航回来时防止重新加载

mysql - 将字段值和 ID 链接到另一个表?

android - 对话主题 Activity : positive and negative buttons

mysql - 基于另一个表中存在的条件选择值?

android - onUpgrade备份表时_id冲突

android - cordova 和 crashlytics beta 构建脚本

java - 即使在 AsyncTask 中运行时也出现 android.os.NetworkOnMainThreadException 错误