一致地运行两项或多项服务的最佳做法是什么?
例如: REST 服务会检索一些数据,如果有一些新内容下载服务应该运行?
我在第一次完成后向接收器发送广播,接收器从意图中抓取数据并将其发送到第二次服务。
答案 0 :(得分:2)
您也可以从Intent
直接向RestService
发送DownloadService
,而不必将BroadcastReceiver
放在其中DownloadService
之间。
我认为IntentService
对您的API Level 9
来说是更好的方式。
IntentService是服务的基类,可根据需要处理异步请求(表示为Intents)。客户端通过startService(Intent)调用发送请求;服务根据需要启动,使用工作线程依次处理每个Intent,并在工作失败时自行停止。
这个"工作队列处理器"模式通常用于从应用程序的主线程卸载任务。存在IntentService类以简化此模式并处理机制。要使用它,请扩展IntentService并实现onHandleIntent(Intent)。 IntentService将接收Intents,启动工作线程,并根据需要停止服务。
所有请求都在一个工作线程上处理 - 它们可能需要多长时间(并且不会阻止应用程序的主循环),但一次只能处理一个请求。
编辑:忘了提及,因为{{1}} Android有一个DownloadManager
类来处理您的下载,在失败,连接更改等后重试它们。