Android 应用程序以异步方式将数据同步到远程服务器
Posted
技术标签:
【中文标题】Android 应用程序以异步方式将数据同步到远程服务器【英文标题】:Android app to sync data to remote server asynchronously 【发布时间】:2014-06-02 22:41:24 【问题描述】:我正在开发一个 android 应用程序,它将数据本地存储在 Sqlite 数据库中并将其同步到远程服务器(MSSQL 服务器)。通过 REST api 处理数据的发送。
这是我希望它的工作方式和我的处理计划:
当应用程序将数据存储在 Sqlite 数据库中时,应用程序将检查互联网连接是否可用,如果可用,则应用程序将创建一个 HttpPost 来发送数据(我使用 AsyncTask 来处理这个)。发送数据后,我将使用 postExecute 回调将数据库中的行标记为“已同步”。
如果互联网连接不可用,则应用程序将继续运行。
我需要让应用程序在互联网连接可用时监听事件,然后应用程序将遍历所有未同步的行并再次使用 AsyncTask 将数据发送到远程服务器。
我的问题是:
-
可以实现吗?如果是,是最佳做法吗?
即使互联网连接可用,如何收听?
谢谢,
【问题讨论】:
是的。您可以检测网络变化,它们是它们的回调。 developer.android.com/reference/android/net/…***.com/a/15756220/2620328 【参考方案1】:您可以手动实现,但我建议您改用SyncAdapter。
虽然您可以设计自己的系统来进行数据传输 您的应用程序,您应该考虑使用 Android 的同步适配器框架。 该框架有助于管理和自动化数据传输,以及 协调不同应用程序之间的同步操作。当你 使用这个框架,你可以利用几个特性 不适用于您自己设计的数据传输方案。
如果您想在不使用SyncAdapter
的情况下实现此功能,那么对于“检测连接何时可用”,您需要添加BroadcastListener
来监听CONNECTIVITY_ACTION
广播,然后使用ConnectivityManager
查询当前状态。
【讨论】:
感谢您的回复。您是说使用 SyncAdapter 会自动处理监听部分(互联网连接的可用性)吗?在存储到 sqlite 数据库的情况下,当 Internet 连接时动态同步的数据如何?我应该使用 AsyncTask 来处理吗?谢谢 @Pelangi 是的。来自文档:自动网络检查——系统仅在设备有网络连接时运行您的数据传输。以上是关于Android 应用程序以异步方式将数据同步到远程服务器的主要内容,如果未能解决你的问题,请参考以下文章
将 SQLite/Android 数据库表同步到远程 MySQL 数据库表(通过 PHP)
Android - 将 SQLite 与 MySQL 同步的最佳方式 [重复]