Java 对于Android上长时间运行的网络进程,我有哪些选择?
我正在开发一个Android应用程序,它有3种不同的网络使用案例。一旦配置好,它就需要执行一个潜在的长时间运行的过程,将本地数据库与远程数据库同步。稍后,它将需要检查来自远程数据库的更新并同步到本地数据库,但它们通常很小 直到第一次同步完成,主活动才真正可用。我想在同步进度上显示通知,如果在前台,则在应用程序本身上显示进度指示器/活动 一旦同步,您就可以按需下载远程托管的MP3 我应该使用哪些Android类/模式来进行大型的、由用户发起的初始DB同步、任何后续的按需mp3文件下载,以及稍后计划的小型DB同步?我可以使用这些类在我的应用程序中显示进度通知和活动吗 选择权 对于我的3个用例,Android API提供了以下类/接口:Java 对于Android上长时间运行的网络进程,我有哪些选择?,java,android,android-intent,download,android-download-manager,Java,Android,Android Intent,Download,Android Download Manager,我正在开发一个Android应用程序,它有3种不同的网络使用案例。一旦配置好,它就需要执行一个潜在的长时间运行的过程,将本地数据库与远程数据库同步。稍后,它将需要检查来自远程数据库的更新并同步到本地数据库,但它们通常很小 直到第一次同步完成,主活动才真正可用。我想在同步进度上显示通知,如果在前台,则在应用程序本身上显示进度指示器/活动 一旦同步,您就可以按需下载远程托管的MP3 我应该使用哪些Android类/模式来进行大型的、由用户发起的初始DB同步、任何后续的按需mp3文件下载,以及稍后计划
- -这看起来对下载数据文件非常有用,但我的应用程序的初始同步基本上只是解析多个巨大的XML HTTP响应。我不确定它是否适合这样做。特别是因为我可以根据需要拆分XML HTTP响应,并且已经通过改造进行了封送
- //-这看起来像是我应该使用的初始同步,也可能是任何后续同步。我不完全确定它们之间的区别,但看起来建议使用
JobIntentService
- -看起来对以后的更新很有希望,但我希望初始同步显示一个进度通知。使用SyncAdapter可以这样做吗?任何mp3下载都应该立即排队并处理,因此这看起来不适用于此
- -根据文档,仅针对短期运行的流程,不认为它适用于我的使用
- -似乎不适用,因为我已经使用改装
用于初始同步和后续同步JobIntentService
用于所有mp3下载DownloadManager
- 将来可能会使用
进行后续同步SyncAdapter
这种方法行吗?我对是否使用SyncAdapter犹豫不决,因为它似乎需要更多的工作才能获得与作业相同的数据。为此,请使用AsyncTask。如果您没有额外的lib依赖项,那么将它放在服务中Rx java可能是一个解决方案。Rx可以轻松地在后台线程上运行长时间运行的工作 示例可以在这里找到
在投票结束后,我把问题浓缩了下来。不知道为什么它被否决了。你能详细说明一下:为了什么(初始同步、文件下载或重新同步)?为什么要参加服务?API文档明确指出,AsyncTask不应用于长时间运行的进程(超过几秒钟)。长时间运行意味着即使在相关应用程序关闭时也可以工作。只有服务才能做到这一点。现在下载需要在单独的线程上运行。AsyncTask允许在单独的线程中运行,而无需挂起服务。将2结合起来就可以了。无效答案,因为链接不再处于活动状态