我需要这个用于为特定公司构建的自定义应用,因此它不会出现在 Google Play 上。 我有一个应用程序,它使用大约 15 个 SQLite 表。它需要能够离线和在线工作,所以我必须使用 SQLite 来保存离线部分的信息。 主要思想是,当 Android 上的用户触摸按钮时,更新过程就会开始。 更新的逻辑是:
- 对于每个本地表,我都有一个 AsyncTask 类来处理下面描述的更新过程
- 每个本地 SQLite 表都有一个“_id”字段(自动增量)和“idremote”字段,用于填充记录的 MySQL id(加上其余字段)
- 每次更新开始时,应用都会准备一个包含本地表中所有“idremote”id 的字符串,并将其发送到服务器
- 在服务器端,PHP 文件接收 ID 字符串并检查 MySQL 表,以查看是否有新的 ID 不在接收到的 ids 字符串中(每个 AsyncTask 在服务器上都有自己的 php 文件)
- 如果 PHP 在 MySQL 表中找到新的 ID,则会使用 JSON 将新记录发送回 Android
- 我在 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/