不同的IntentService实例是否共享同一个队列?

3

我有一个关于IntentService的问题。

假设我有两个IntentService类,它们执行不相关的单独任务。

public class TaskA extends IntentService{
    @Override
    protected void onHandleIntent(Intent workIntent) {}        
}

并且第二个

public class TaskB extends IntentService{
    @Override
    protected void onHandleIntent(Intent workIntent) {}            
}

如果我先开始任务A,然后下一行开始任务B,任务B是否必须等待任务A完成?

我知道,如果我再次启动相同的意图服务,它会被添加到队列中,但这是否适用于实例还是整个应用程序全局?

2个回答

2
如果我先开始执行任务A,然后下一行开始执行任务B,任务B需要等待任务A完成吗?
每个IntentService都有自己的工作线程。具体来说,它是HandlerThread的一个实例,如IntentService的源代码所示。因此,一个IntentService的onHandleIntent()不应该阻塞另一个IntentService的onHandleIntent()。

0

来自文档

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


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接