1

一致地运行两个或多个服务的最佳实践是什么?

例如: REST服务检索一些数据,如果有一些新的东西下载服务应该运行?

我在第一个完成后向接收器发送广播,接收器从意图中获取数据并将其发送到第二个服务。

4

1 回答 1

2

您也可以直接Intent从 the发送 an到 the ,而无需将 the 放在它们两者之间。RestServiceDownloadServiceBroadcastReceiver

我认为IntentService这对你来说是一个更好的方法DownloadService

IntentService 是按需处理异步请求(表示为 Intent)的服务的基类。客户端通过 startService(Intent) 调用发送请求;该服务根据需要启动,使用工作线程依次处理每个 Intent,并在工作结束时自行停止。

这种“工作队列处理器”模式通常用于从应用程序的主线程卸载任务。IntentService 类的存在是为了简化这种模式并处理机制。要使用它,请扩展 IntentService 并实现 onHandleIntent(Intent)。IntentService 将接收 Intent,启动工作线程,并酌情停止服务。

所有请求都在单个工作线程上处理——它们可能需要尽可能长的时间(并且不会阻塞应用程序的主循环),但一次只会处理一个请求。

编辑:忘了提到,因为API Level 9Android 有一个DownloadManager类可以处理您的下载,在失败、连接更改等后重试它们。

于 2012-07-12T12:45:13.750 回答