我在我的应用中使用了 AsyncTask
执行一些密集型操作,这是由 Android 教程建议的,并在我的主 Activity 中显示了一个 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
,而我想在执行某些操作期间更新进度对话框。
有什么提示可以做到这一点吗?