我已经在一个名为StartServiceActivity的活动中启动了两个服务。
在StartServiceActivity的On create方法中,我已经启动了两个服务,服务1和服务2。
服务创建成功。
-
在服务1的onstart方法上我已经启动了一个asynTask1.
asynTask1执行成功并进入doInBackGround()
在doInbackground()的asynctask1(service1)我已经创建了一个
while(true){
-
在service2的启动方法上,我已经启动了一个asynTask2.
然后我试图启动asynTask2,但它启动失败。asynTask2的doInBackground()没有被执行
-
当我在asynTask1中注释
while(true){
时,asynTask1和asynTask2都启动了。 我想用
while(true)
执行async1和asyn2。原因是AsyncTasks
按顺序运行,即一个接一个。看一下这里的执行顺序。
那么发生的事情是:在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();
}
看看这个链接