我的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 需要很长时间,并且可以更改用户的当前位置。我需要最准确的用户位置。