15

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 レベル 17 でアプリを実行しています

4

3 に答える 3

45

それらは並行して実行されますか、それとも順番に実行されますか?

android:targetSdkVersion13 以降で、Android 3.2 以降のデバイスで実行している場合、それらは連続して実行されます。

Android 1.5 で実行している場合は、シリアルで実行されます。

それ以外の場合、それらは並行して実行されます。

execute()に置き換えることで、並列実行を選択できますexecuteOnExecutor(AsyncTask.THREAD_POOL_EXECUTOR)

詳細についてはAsyncTaskJavaDocsの「実行順序」セクションを参照してください。

于 2013-09-06T15:33:16.503 に答える
1

あなたの質問への答えは次のとおりです。それは、これを実行している Android のバージョンに完全に依存し、いくつかのアプリケーションで直面した大きな問題です。

それらを正しく実行する方法を確認したい場合は、このリンクをチェックしてください。

于 2013-09-06T15:33:41.060 に答える
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);
于 2016-11-23T07:05:16.197 に答える