まず、下手な英語でごめんなさい。私はAndroid 2.3を持っているので、順次実行する代わりに「本物の」並列AsyncTaskがあります(Android 3.0以降)。いくつかの AsyncTasks があり、それぞれが onPostExecute() コールバックを実行します (UI スレッドで実行されることはわかっています)。並列の AsyncTask が 2 つしかなく、最初のタスクがジョブを完了すると、コールバック onPostExecute() が呼び出されるとします。onPostExecute() (最初の AsyncTask から) メソッドが UI スレッドで実行されている間に、2 番目のタスクがその onPostExecute() メソッドを呼び出して、最初の AsyncTask の onPostExecute() の現在の実行を中断する可能性はありますか?
// UPDATED 今、コードで説明します:
// AsyncTask1
onPostExecute(Result result) {
activity->processResult1(result);
}
// AsyncTask2
onPostExecute(Result result) {
activity->processResult2(result);
AsyncTask1 がジョブを終了し、processResult1() が非常に長時間実行されるメソッドであるとします。UI スレッドで processResult1() を実行している間に、AsyncTask2 はそのジョブを終了します。今、何が起きた?
- processResult1() は processResult2() によって中断されます
- processResult2() は processResult1() が終了するまで待機します