У меня есть несколько асинхронных задач, которые получают данные из служб JSON. В onPreExecute внешней задачи я хочу показать progressDialog. Я хочу отклонить его в onPostExecute и начать другое действие.
Проблема в том, что при вызове моего onPostExecute по-прежнему происходит загрузка данных, поэтому следующее действие выполняется без необходимых данных.
Это нормальное поведение? Есть ли обходной путь?
class GetDataAsync extends AsyncTask<Integer, Integer, Integer> {
@Override
protected void onPreExecute() {
Log.d("startupflow","GetDataAsync onPreExecute");
progress = new ProgressDialog(Login.this);
progress.setMessage("Loading...");
progress.show();
super.onPreExecute();
}
@Override
protected Integer doInBackground(Integer... params) {
Log.d("startupflow","GetDataAsync doInBackground");
GetData getData = new GetData();
getData.LoadAllData(getApplicationContext(), token, client);
return null;
}
@Override
protected void onPostExecute(Integer integer) {
Log.d("startupflow","GetDataAsync onPostExecute");
if (progress.isShowing()) {
progress.dismiss();
}
Intent intent = new Intent(Login.this, Admin.class);
startActivity(intent);
super.onPostExecute(integer);
}
В классе GetData:
public void LoadAllData(Context context, Token token, OAuth2Client client) {
this.context = context;
this.token = token;
this.client = client;
new AllDataAsync().execute();
}
class AllDataAsync extends AsyncTask<Integer, Integer, Integer> {
@Override
protected Integer doInBackground(Integer... params) {
try {
Log.d("GetData", "In AllDataAsyc, do in background");
GetClientandToken(token, client);
Log.d("GetData", "getcompanyanddatatapstask");
new GetCompanyAndDataTapsTask().execute();
Log.d("GetData", "getslidestask");
new GetSlidesTask().execute();
} catch (Exception e) {
e.printStackTrace();
errorOccurred = true;
}
return null;
}
}
Журнал:
08-12 11:27:37.515 D/startupflow﹕ GetDataAsync onPreExecute
08-12 11:27:37.562 D/startupflow﹕ GetDataAsync doInBackground
08-12 11:27:37.601 D/startupflow﹕ GetDataAsync onPostExecute
08-12 11:27:40.132 D/startupflow﹕ all data saved