我想在android
中使用AsyncTask并行向服务器发送多个请求所以我该怎么做?
我见过像
这样的代码myAsync.executeOnExecutor(AsyncTask.THREAD_POOL_EXECUTOR,params)
但它没有并行运行,而是以串行方式运行。
请帮帮我。
答案 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()方法。