課程
/移動開發
/Android
/Android必學-AsyncTask基礎
聽不懂老師說的讓線程繼續執行操作,不是都cancel掉了嗎,肯定不執行了啊
2016-11-06
源自:Android必學-AsyncTask基礎 3-2
正在回答
跟我的一模一樣,至今不知道怎么解決,你搞定了嗎?親,什么兩個$a,我查了一下沒有找到,你可以詳細把語句打出來。
我測試:cancel只相當于一個標記flag。
這里我沒設置cancel方法而是定義了一個布爾類型的全局變量flag。
private Boolean flag=false;
protected void onPause() {
super.onPause();
if(mtask!=null&&mtask.getStatus() == AsyncTask.Status.RUNNING){
//mtask.cancel(true);
flag = true;
}
在onProgressUpdate方法中判斷flag是否為ture
if(flag == true){
return;
這樣做能得到同樣的效果。
這個cancel只是對AsyncTask做了一些改變。一個AsyncTask可以在任何時候通過調用cancel(true)執行取消操作,但是這個方法只是使AsyncTask的isCancelled()返回true,在調用cancel之后,這個AsyncTask的 onCancelled(Object) 方法將會取代 onPostExcute(Object) 方法作為doInBackground 方法return時候的調用方法,所以為了及時的停止當前的任務,就需要在doInBackground 的任務中時刻檢測 isCancelled,然后手動 return,直接跳過當前的任務
行云流水V 提問者
BINGO人生 回復 行云流水V 提問者
舉報
了解Android中AsyncTask的使用方法,掌握異步線程的使用
Copyright ? 2025 imooc.com All Rights Reserved | 京ICP備12003892號-11 京公網安備11010802030151號
購課補貼聯系客服咨詢優惠詳情
慕課網APP您的移動學習伙伴
掃描二維碼關注慕課網微信公眾號
2022-03-23
跟我的一模一樣,至今不知道怎么解決,你搞定了嗎?親,什么兩個$a,我查了一下沒有找到,你可以詳細把語句打出來。
2017-02-17
我測試:cancel只相當于一個標記flag。
這里我沒設置cancel方法而是定義了一個布爾類型的全局變量flag。
private Boolean flag=false;
protected void onPause() {
super.onPause();
if(mtask!=null&&mtask.getStatus() == AsyncTask.Status.RUNNING){
//mtask.cancel(true);
flag = true;
}
}
在onProgressUpdate方法中判斷flag是否為ture
if(flag == true){
return;
}
這樣做能得到同樣的效果。
2016-11-07
這個cancel只是對AsyncTask做了一些改變。一個AsyncTask可以在任何時候通過調用cancel(true)執行取消操作,但是這個方法只是使AsyncTask的isCancelled()返回true,在調用cancel之后,這個AsyncTask的 onCancelled(Object) 方法將會取代 onPostExcute(Object) 方法作為doInBackground 方法return時候的調用方法,所以為了及時的停止當前的任務,就需要在doInBackground 的任務中時刻檢測 isCancelled,然后手動 return,直接跳過當前的任務