私のAsyncTask
ように見える:
private class MyTask extends AsyncTask<String, Void, List<Data>> {
private volatile UserData userData;
protected List<Data> doInBackground(String... params) {
// do some job 1
publishProgress();
// wait until the progress finish to update variable.
if(userData!= null){
//do some job 2
}
//do some job 3
}
protected void onProgressUpdate(Void... values) {
// try to ask user and collect information
userData= getData();
}
}
問題は、 を呼び出すとpublishProgress()
、 でジョブ 3 が実行されることdoInBackground
です。続行する前に onProgressUpdate の完了を待つにはどうすればよいですか?
更新:
getData() メソッドで、ユーザーの現在の場所を取得しようとしましたが、これは doInBackground やビューからのその他の情報では機能しません。ジョブ1に非常に長い時間がかかり、ユーザーの現在の場所が変更される可能性があるため、これを行う必要があります。ユーザーの最も正確な場所が必要です。