在我的应用中,我正在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...
}
因此,此处一切正常,但是我想以某种方式更新进度对话框,以便向用户显示一些实际进度,而不是仅显示虚拟的“ Please wait ...”消息。我能以某种方式从MyTask.doInBackground所有工作完成的地方访问进度对话框吗?
据我了解,它是作为单独的线程运行的,因此我无法从那里“与”主活动“交谈”,这就是为什么我onPostExecute经常将结果推回去。但是问题是onPostExecute只有在所有工作都已经完成并且在执行某项操作的过程中我想更新对话框时,才调用该方法。
任何提示如何做到这一点?
慕哥9229398
红糖糍粑
相关分类