4

有谁知道为什么 doInBackground 需要很长时间才能开始?这是一个例子:

runDoInBackground(){
   print("starting task");
   new MyAsyncTask(someObject,otherObject).execute((Void)null);
}

private class MyAsyncTask extends<Void,Void,Integer>{
   SomeObject someObject;
   OtherObject otherObject;

   public MyAsyncTask(SomeObject someObject, OtherObject otherObject){
      this.someObject=someObject;
      this.otherObject = otherObject;
   }

   @Override
   protected Integer doInBackground(Void... params) {
      print("start background run")
      ... work ... get from server ...
   }

}

如果运行缓慢的原因是其他干扰线程(我对此表示怀疑),我该如何给这个最高优先级?

4

1 回答 1

4

它确实取决于您拥有如何执行 AsyncTasks 的 Android 版本。它们在 API5 (2.0) - API 10 (2.3.3) 上并行执行。从 API 11 开始,它们默认再次串行执行。正如zapl提到的,你必须打电话

task.executeOnExecutor(AsyncTask.THREAD_POOL_EXECUTOR, (Void)null);

使它们再次并行运行。

于 2013-11-04T22:55:08.433 回答