Android从远程MySQL服务器(PHP)更新多个本地SQLite表,我该怎么办?

标签 android mysql sqlite android-asynctask

我需要这个用于为特定公司构建的自定义应用,因此它不会出现在 Google Play 上。 我有一个应用程序,它使用大约 15 个 SQLite 表。它需要能够离线和在线工作,所以我必须使用 SQLite 来保存离线部分的信息。 主要思想是,当 Android 上的用户触摸按钮时,更新过程就会开始。 更新的逻辑是:

  1. 对于每个本地表,我都有一个 AsyncTask 类来处理下面描述的更新过程
  2. 每个本地 SQLite 表都有一个“_id”字段(自动增量)和“idremote”字段,用于填充记录的 MySQL id(加上其余字段)
  3. 每次更新开始时,应用都会准备一个包含本地表中所有“idremote”id 的字符串,并将其发送到服务器
  4. 在服务器端,PHP 文件接收 ID 字符串并检查 MySQL 表,以查看是否有新的 ID 不在接收到的 ids 字符串中(每个 AsyncTask 在服务器上都有自己的 php 文件)
  5. 如果 PHP 在 MySQL 表中找到新的 ID,则会使用 JSON 将新记录发送回 Android
  6. 我在 AsyncTask 的 onPostExecute 中处理生成的 JSON,并将新记录插入 SQLite 表中

所以我有 15 个 AsyncTask 类,它们都执行与上面相同的操作,每个类都处理一个特定的表。 我还通过相同的机制更新远程表,将新记录发送到 MySQL

我的问题是我希望能够看到/知道更新何时完成/完成,以便我可以通知用户这一事实,但由于我们正在讨论多个 AsyncTasks ...同时运行...我不知道如何实现这个。如何知道所有 AsyncTasks 何时完成?

或者有更好的方法来完成这项任务吗?本地/远程表的更新?

谢谢

最佳答案

实现此目的的最佳方法是使用 SyncAdapter,它旨在在后台处理同步到远程服务器的更改。

您可以在这里找到更多信息:http://developer.android.com/training/sync-adapters/index.html

您应该忽略“创建 stub 内容提供程序”部分并创建一个内容提供程序来访问现有的 SQLite 数据库。

关于Android从远程MySQL服务器(PHP)更新多个本地SQLite表,我该怎么办?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/26590356/

相关文章:

Android:均衡器 - getNumberOfBands()

sql - 如果我们有唯一值,为什么我们在表中使用 ID 列

android - 无法填充 SQLite 数据库

python - 在 Apache/mod_wsgi 上运行 Django 时出错

java - getParcelableExtra 返回空 NFC 标签

android - 自定义对话框中的消失字段

android - GUI 在高 DPI 显示器上非常小

php - mysqli 从数组更新

php - 代码点火器 AND OR AND

android - 如何从 SQLite 数据库中检索图像?