多次调用 IntentService 的 startService 时,意图是不是会排队?

Posted

技术标签:

【中文标题】多次调用 IntentService 的 startService 时,意图是不是会排队?【英文标题】:Does intent go queue when calling startService for IntentService multiple times?多次调用 IntentService 的 startService 时,意图是否会排队? 【发布时间】:2015-04-08 05:40:40 【问题描述】:

我想使用IntentService 从互联网下载。我通过调用startService(intentserive); 将一个url 通过Intent 传递给IntentService

如果我为各种意图调用 startService,这些意图会排队等待下载吗?

【问题讨论】:

【参考方案1】:

您的问题的简短回答是“是”。来自文档:

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

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

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

Official docs link

【讨论】:

【参考方案2】:

是的。 Intent 服务将所有工作 Intent 排队并在单个工作线程中一一处理。

【讨论】:

以上是关于多次调用 IntentService 的 startService 时,意图是不是会排队?的主要内容,如果未能解决你的问题,请参考以下文章

IntentService与Service的区别

android 中IntentService的使用场景

什么时候用IntentService

Android IntentService 以空意图触发

Android面试收集录9 IntentService详解

从 IntentService 调用 AsyncTask 的问题