Androidアプリケーションで、同じクラスからのパラメーターが異なる2つのAsyncTaskタスクを実行します。例:
new myAsynckTask(a,b,c).execute();
new myAssyncTask(a,d,e).execute();
それらは並行して実行されますか、それとも連続して実行されますか?最初のものが開始すると実行の進行状況が表示され、終了すると終了するのに時間がかかる2番目のものが表示されますが、進行状況が表示されないため、これを尋ねます(長方形は表示されますが進行状況バーは表示されます) 20%を表示していません。など)。凍えるようなものですが、結果は大丈夫です。
私がやりたいのは、それらを順番に実行し、2つの進行状況を確認できるようにすることです。 Android Jelly Bean 4.2.2 API Level17でアプリを実行します
それらは並行して実行されますか、それとも連続して実行されますか?
_Android:targetSdkVersion
_が13以上で、Android 3.2以降のデバイスで実行している場合、それらはシリアルに実行されます。
Android 1.5で実行している場合、それらはシリアルに実行されます。
それ以外の場合は、並行して実行されます。
execute()
をexecuteOnExecutor(AsyncTask.THREAD_POOL_EXECUTOR)
に置き換えることで、並列実行をオプトインできます。
詳細については、 AsyncTask
JavaDocs の「実行順序」セクションを参照してください。
あなたの質問への答えは次のとおりです:それはあなたがこれを実行しているAndroidのバージョンに完全に依存し、私がいくつかのアプリケーションで直面した大きな問題です。
それらを正しく実行する方法を確認したい場合は、 このリンク を確認する必要があります
更新: 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);