多次调用 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 时,意图是不是会排队?的主要内容,如果未能解决你的问题,请参考以下文章