Androidで次のようなものを実装したい:
for(int i=0; i<num; i++){
//a,b.. are changing
aTask = new myAsyncTask(a,b..);
aTask.execute();
//Code to wait for myAsyncTask to finish
}
問題は、新しい反復を開始する前に myAsyncTask が終了するのをどのように待つことができるかです。私が考えた解決策の 1 つは、内部に Handler を配置して数秒間待機することです。例えば:
Handler handler = new Handler();
handler.postDelayed(new Runnable() {
public void run() {
}
}, 5000);
しかし、myAsyncTask を待機する標準時間を設定する必要があるため、これは機能していても正しくありません。また、 a,b.. パラメータは反復ごとに変化するため、 myAsyncTask が早く終了するか遅く終了するかはわかりません。
私が考えた別の解決策は、ループのたびにオブジェクト aTask に問い合わせて、myAsyncTask のステータスを取得し、それが FINISHED かどうかを確認することです。例えば:
while(!aTask.getStatus().equalsTo(AsyncTask.Status.FINISHED)){
}
しかし、myAsyncTask は常に RUNNING であるため、これは機能しません。
誰か助けてくれませんか?