В моем приложении я занимаюсь интенсивной работой в AsyncTask
, как это было предложено учебниками Android, и показываю ProgressDialog
в своей основной деятельности:
dialog = ProgressDialog.show(MyActivity.this, "title", "text");
new MyTask().execute(request);
где затем в MyTask
я возвращаю результаты в действие:
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
вызывается только тогда, когда все работы уже выполнены, и я хотел бы обновить ход диалога в середине чего-то.
Любые советы, как это сделать?