亚洲在线久爱草,狠狠天天香蕉网,天天搞日日干久草,伊人亚洲日本欧美

為了賬號安全,請及時綁定郵箱和手機立即綁定
已解決430363個問題,去搜搜看,總會有你想問的

從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 關注
  • 490 瀏覽

添加回答

舉報

0/150
提交
取消
微信客服

購課補貼
聯系客服咨詢優惠詳情

幫助反饋 APP下載

慕課網APP
您的移動學習伙伴

公眾號

掃描二維碼
關注慕課網微信公眾號