While循环在异步任务中阻止另一个异步任务的执行



我已经在一个名为StartServiceActivity的活动中启动了两个服务。

在StartServiceActivity的On create方法中,我已经启动了两个服务,服务1和服务2。

服务创建成功。

  1. 服务1的onstart方法上我已经启动了一个asynTask1.

    asynTask1执行成功并进入doInBackGround()

    在doInbackground()的asynctask1(service1)我已经创建了一个while(true){

  2. 在service2的启动方法上,我已经启动了一个asynTask2.

    然后我试图启动asynTask2,但它启动失败。asynTask2的doInBackground()没有被执行

  3. 当我在asynTask1中注释while(true){时,asynTask1和asynTask2都启动了。

  4. 我想用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();
   }

看看这个链接

相关内容

  • 没有找到相关文章

最新更新