如何在android中并行或独立运行AsyncTask

时间:2013-06-07 12:39:31

标签: android

我想在android

中使用AsyncTask并行向服务器发送多个请求

所以我该怎么做?

我见过像

这样的代码

myAsync.executeOnExecutor(AsyncTask.THREAD_POOL_EXECUTOR,params)

但它没有并行运行,而是以串行方式运行。

请帮帮我。

4 个答案:

答案 0 :(得分:1)

嘿,executeonExecutor应该完美运行。

您需要使用线程池Executor来执行Asynctask。默认实现使用在单个线程上运行的串行执行程序

所以创建一个ThreadPoolExeecutor然后使用
Asynctask的executeonExecutor而不仅仅是execute方法

Honeycomb版本的AsyncTask发生了变化。旧版本有一个10个线程的线程池,因此您可以并行运行10个任务。但对于Honeycomb及以上版本,default是一个串行执行器,它逐个执行任务。但是你可以传递一个ThreadPoolExecutor来执行:

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();
}

答案 1 :(得分:0)

创建异步任务的新实例并执行,然后它将并行执行

答案 2 :(得分:0)

AsyncTask使用线程池模式来运行doInBackground()中的东西。问题最初(在早期的Android OS版本中)池大小只有1,这意味着没有对一堆AsyncTasks进行并行计算。但后来他们解决了这个问题,现在规模是5。

new myAsync().execute(params);
new myAsync().execute(params);

答案 3 :(得分:0)

简单地......使用

    new YourAssynctask().execute();

这确实会调用你的Assyntask的OnpreExecute()方法。