我在Android应用程序中运行两个AsyncTask任务,这些任务来自同一个类但具有不同的参数。例如:
new myAsynckTask(a,b,c).execute();
new myAssyncTask(a,d,e).execute();
它们是并行执行还是按顺序执行?我问这个,因为当第一个开始时,显示执行的进度,完成后我看到第二个需要更多时间才能完成但我看不到进度(我能看到矩形但是进度条)没有显示20%..等等)。这就像冻结但结果还可以。
我想要做的是按顺序运行它们,并能够看到它们中的两个进度。 我在Android Jelly Bean 4.2.2 API Level 17上运行应用程序
答案 0 :(得分:42)
它们是并行执行还是按顺序执行?
如果您的android:targetSdkVersion
为13或更高,并且您使用的是Android 3.2或更高版本的设备,则会以串行方式执行。
如果您在Android 1.5上运行,它们将以串行方式执行。
否则,它们将并行执行。
您可以将execute()
替换为executeOnExecutor(AsyncTask.THREAD_POOL_EXECUTOR)
来选择并行执行。
有关详情,请参阅the AsyncTask
JavaDocs的“执行顺序”部分。
答案 1 :(得分:1)
您的问题的答案是:它完全取决于您运行此Android的Android版本,并且是我在多个应用程序中遇到的一个巨大问题。
如果您想了解如何正确运行它们,请查看this link
答案 2 :(得分:0)
更新:从Android Developers复制并由Yazazzello发起
“此类在API级别26.0.0-alpha1中已弃用。请使用AsyncTask 直接地“。
您应该将其用于并行执行:
AsyncTaskCompat.executeParallel(new AsyncTask<Param, Void, Data>() {
@Override
protected Data doInBackground(Param... params) {
return downloader.getData(params[0]);
}
@Override
protected void onPostExecute(Data response) {
processData(response);
}
}, param);