В моем приложении я выполняю некоторую интенсивную работу в AsyncTask
, как предложено в учебниках по Android, и показываю ProgressDialog
в моей основной деятельности:
dialog = ProgressDialog.show(MyActivity.this, "title", "text");
new MyTask().execute(request);
, где затем в MyTask
Iпубликовать результаты обратно в активность:
class MyTask extends AsyncTask<Request, Void, Result> {
@Override protected Result doInBackground(Request... params) {
// do some intense work here and return result
}
@Override protected void onPostExecute(Result res) {
postResult(res);
}
}
и после публикации результатов в основной активности я скрываю диалог:
protected void postResult( Result res ) {
dialog.dismiss();
// do something more here with result...
}
Так что все работает нормально, но я бы хотел как-тообновить диалог прогресса, чтобы он мог показывать пользователю реальный прогресс вместо просто фиктивного сообщения «Пожалуйста, подождите ...».Можно ли как-нибудь получить доступ к диалоговому окну прогресса из MyTask.doInBackground
, где вся работа выполнена?
Как я понимаю, он работает как отдельный поток, поэтому я не могу "разговаривать" с основным действием оттуда, и поэтому я использую onPostExecute
, чтобы передать результат обратно.Но проблема в том, что onPostExecute
вызывается только тогда, когда вся работа уже выполнена, и я хотел бы обновить диалоговое окно прогресса в процессе выполнения чего-либо.
Любые советы, как это сделать?