【问题标题】:Do separate IntentService instances share the same queue?不同的 IntentService 实例是否共享同一个队列?
【发布时间】:2016-01-09 16:18:49
【问题描述】:

我有一个关于 IntentService 的问题

假设我有两个意图服务类,它们执行彼此无关的独立任务。

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

第二个

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

如果我先启动TaskA,然后下一行启动TaskB,TaskB是否必须等待TaskA完成?

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

【问题讨论】:

    标签: android android-intentservice


    【解决方案1】:

    如果我先启动TaskA,然后下一行启动TaskB,TaskB是否必须等待TaskA完成?

    每个IntentService 都有自己的工作线程。具体来说,它是HandlerThread 的一个实例,如the source code to IntentService 所示。因此,一个IntentServiceonHandleIntent() 不应阻止另一个IntentServiceonHandleIntent()

    【讨论】:

      【解决方案2】:

      来自the documentation

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

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多