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

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

Android:取消異步任務

Android:取消異步任務

一只名叫tom的貓 2019-08-02 16:24:37
Android:取消異步任務我使用異步任務上傳圖像并獲得一些結果。在上傳圖像時,我看到一個進度對話框,用onPreExecute()方法編寫,如下所示:    protected void onPreExecute() {           uploadingDialog = new ProgressDialog(MyActivity.this);           uploadingDialog.setMessage("uploading");           uploadingDialog.setCancelable(true);          uploadingDialog.show();     }好的,當我按下后退按鈕時,顯然對話框因setCancelable(true)而消失。但(顯然)異步任務不會停止。那么我該如何解決這個問題呢?當我按下后退按鈕時,我想取消對話和異步任務。有任何想法嗎?
查看完整描述

3 回答

?
弒天下

TA貢獻1818條經驗 獲得超8個贊

來自SDK:

取消任務

可以通過調用cancel(boolean)隨時取消任務。調用此方法將導致后續調用isCancelled()返回true。

調用此方法后,將在doInBackground(Object [])返回后調用onCancelled(Object)而不是onPostExecute(Object)。

為確保盡快取消任務,應始終定期從doInBackground(Object [])檢查isCancelled()的返回值,如果可能的話(例如在循環內)。

所以你的代碼適合對話框監聽器:

uploadingDialog.setOnCancelListener(new DialogInterface.OnCancelListener() {
    public void onCancel(DialogInterface dialog) {
        myTask.cancel(true);
        //finish();
    }});

現在,正如我之前在SDK中提到的那樣,您必須檢查任務是否被取消,因為您必須在onPreExecute()方法中檢查isCancelled()。

例如:

if (isCancelled()) 
    break;else{
   // do your work here}


查看完整回答
反對 回復 2019-08-02
  • 3 回答
  • 0 關注
  • 619 瀏覽

添加回答

舉報

0/150
提交
取消
微信客服

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

幫助反饋 APP下載

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

公眾號

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