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}
- 3 回答
- 0 關注
- 619 瀏覽
添加回答
舉報
0/150
提交
取消