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