【发布时间】:2015-05-10 11:49:03
【问题描述】:
我对 Async 的执行有点怀疑。任务我想尽量减少我的应用程序正在执行的http请求所花费的时间,所以在互联网上进行了一些研发之后,我选择了下面描述的选项,我的问题是使用下面描述的代码,我的请求是否会并行处理,如果是,这是一种最有效的方法,如果不是,我怎样才能让它们并行执行,这样用户就不必等待太多! 最好的问候。
if (isInternetAvailable) {
if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.HONEYCOMB) {
new DownloadXmlTask().executeOnExecutor(AsyncTask.THREAD_POOL_EXECUTOR, URLORDERLIST);
new DownloadXmlTask().executeOnExecutor(AsyncTask.THREAD_POOL_EXECUTOR, URLORDERDETAILS);
new DownloadXmlTask().executeOnExecutor(AsyncTask.THREAD_POOL_EXECUTOR, URLCUSTOMERDETAILS);
} else {
new DownloadXmlTask().execute(URLORDERLIST);
new DownloadXmlTask().execute(URLORDERDETAILS);
new DownloadXmlTask().execute(URLCUSTOMERDETAILS);
}
handler.post(new Runnable() {
@Override
public void run() {
Toast.makeText(
getApplicationContext(),
"Fetch Data",
Toast.LENGTH_LONG).show();
}
});
} else {
handler.post(new Runnable() {
@Override
public void run() {
Toast.makeText(
getApplicationContext(),
"Please Try Again Later,No internet Connectivity Detected!",
Toast.LENGTH_SHORT).show();
}
});
}
【问题讨论】:
-
是的,它会并行执行,尝试使用
executeOnExecutor(AsyncTask.SERIAL_EXECUTOR, mArgs);,你会发现它有多慢 -
running parallel AsyncTask 的可能重复项