为了账号安全,请及时绑定邮箱和手机立即绑定

从AsyncTask更新活动中的进度对话框

从AsyncTask更新活动中的进度对话框

慕的地6264312 2019-11-02 14:06:56
在我的应用中,我正在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只有在所有工作都已经完成并且在执行某项操作的过程中我想更新对话框时,才调用该方法。任何提示如何做到这一点?
查看完整描述

2 回答

?
慕哥9229398

TA贡献1877条经验 获得超6个赞

的AsyncTask有方法onProgressUpdate(Integer...),你可以调用每个迭代例如或者每个进程前进过程中完成时间doInBackground()致电publishProgress()。


请参阅文档以获取更多详细信息


查看完整回答
反对 回复 2019-11-02
?
红糖糍粑

TA贡献1815条经验 获得超6个赞

您可以从AsyncTask的方法更新,onProgressUpdate(YOUR_PROGRESS)该方法可以通过调用 YOUR_PROGRESS的数据类型从doInBackground方法调用,publishProgress(YOUR_PROGRESS)该数据类型可以从AsyncTask<Int, YOUR_PROGRESS_DATA_TYPE, Long>


查看完整回答
反对 回复 2019-11-02
  • 2 回答
  • 0 关注
  • 461 浏览

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信