在AsyncTask中更新Activity中的进度对话框

在我的应用程序中,我在AsyncTask做了一些激烈的工作,正如Android教程所build议的,并在我的主要活动中显示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只有当所有的工作已经完成,我想更新进展中的对话框进行调用。

任何提示如何做到这一点?

Solutions Collecting From Web of "在AsyncTask中更新Activity中的进度对话框"