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

时间:2016-01-09 16:18:50

标签: android android-intentservice

我对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完成?

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

2 个答案:

答案 0 :(得分:2)

  

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

每个IntentService都有自己的工作线程。具体来说,它是HandlerThread的一个实例,如the source code to IntentService中所示。因此,IntentServiceonHandleIntent() IntentService不应该阻止其他onHandleIntent() function isAdult(day, month, year) { var age = 18; var mydate = new Date(); mydate.setFullYear(year, month-1, day); var currdate = new Date(); var setDate = new Date(); setDate.setFullYear(mydate.getFullYear() + age, month-1, day); if ((currdate - setDate) > 0) return true; return false; } var dob = new Date("1980-12-01"); if( isAdult(dob.getDate(), dob.getMonth()+1, dob.getFullYear()) ) { console.log("Adult") }

答案 1 :(得分:0)

来自the documentation

  

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