该课题的总方向选择在Android的API级别15
后台作业对于这个问题,认为作业管理的一个网页浏览器需要下载网站,图片做的,和其他可能的内容向用户显示。从技术上讲,这与我所面临的情况非常相似。我要求我有选择(AsyncTask
,Service
,第三方库,...)来实现这样的作业管理。
详细
我正在开发的Android应用程序,它需要下载的东西在后台,每当更多的数据可以从运行下载更新UI。
当用户选择时,他导航到他的愿望的另一个Activity
。之前下载的数据对于新的Activity
并不重要。因此需要停止第一次下载(为了下载新的带宽而腾出带宽),并且需要开始新的下载新的Activity
。典型的下载时间将在几秒到半分钟之间完成。
当用户导航回第一Activity
,第一次下载,不得从头开始。相反,它应该恢复。 当前Activity
的下载完成,但还有其他最近的下载没有完成时,它们应该继续,以便用户导航到那些需要该数据的其他活动时,它可以立即呈现。即使应用程序进入后台,甚至每天定期进行一次,下载仍会继续,因此应用程序即使在脱机状态下也可以合理地提供最新的内容。
我有什么选择可以在API级别15进行这样的作业管理?请记住,这是关于作业管理/调度,而不是下载。下载东西相当容易编程,但调度是困难的部分。要求
摘要:
- 取消/暂停工作(因此取消下载)
- 观察员大干快上的工作进展情况通知
- 数据必须是部分访问
- 可恢复工作(读:可恢复的下载;创建一个新的恢复下载的工作当然是好的)
- 作业可以在app不在前台时运行 个
选择我想过
AsyncTask
我认为这是不适合的,因为它绑定到活动,所以这是一个错误有在后台此运行而应用程序是不是在前景。根据Asking an IntentService for information about its queue,不可能改变IntentService的队列。
Service
到目前为止,我认为需要重写从头调度机制,或基于它的IntentService
的源代码等建议通过上述SO回答。
感谢您分享您对各方面的看法,这有助于两种方式。现在我读了你的文章,我同意我的部分要求不是与工作管理相关的。因此,我现在也对问题有了更清晰的认识。 –