私のアプリでは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
すべての作業が既に完了しているときにのみ呼び出され、何かをしている最中にダイアログの進行状況を更新したいということです。
これを行う方法のヒントはありますか?