我在名为StartServiceActivity的活动中启动了两项服务。
在StartServiceActivity的On create方法中,我启动了两项服务,即服务1和服务2.
服务创建成功。
在服务1 的onstart方法上,我启动了一个asynTask1。
asynTask1已成功执行并进入doInBackGround()
在asynctask1(service1)的doInbackground()中,我创建了一个while(true){
在service2的start方法中,我启动了一个asynTask2。
然后我尝试启动 asynTask2 ,但无法启动。 asynTask2的doInBackground()未被执行
当我在asynTask1中评论while(true){
时,asynTask1和asynTask2都启动了。
我想用while(true)
执行async1和asyn2。
答案 0 :(得分:2)
原因是因为AsyncTasks
按顺序运行,即一个接一个地运行。在这里查看Order of execution。
所以发生的事情是:task1
中有一个首先运行的while循环。 while循环没有完成,因此task2
无法执行。
<强>解决方案:强>
您需要手动设置AsyncTask
的执行程序,以便不使用默认(串行)执行程序。做类似的事情:
if (Build.VERSION.SDK_INT >= 11) {
//--post GB use serial executor by default --
task.executeOnExecutor(AsyncTask.THREAD_POOL_EXECUTOR);
} else {
//--GB uses ThreadPoolExecutor by default--
task.execute();
}
看看这个link