課程
/移動(dòng)開(kāi)發(fā)
/Android
/Android必學(xué)-AsyncTask基礎(chǔ)
聽(tīng)不懂老師說(shuō)的讓線程繼續(xù)執(zhí)行操作,不是都cancel掉了嗎,肯定不執(zhí)行了啊
2016-11-06
源自:Android必學(xué)-AsyncTask基礎(chǔ) 3-2
正在回答
跟我的一模一樣,至今不知道怎么解決,你搞定了嗎?親,什么兩個(gè)$a,我查了一下沒(méi)有找到,你可以詳細(xì)把語(yǔ)句打出來(lái)。
我測(cè)試:cancel只相當(dāng)于一個(gè)標(biāo)記flag。
這里我沒(méi)設(shè)置cancel方法而是定義了一個(gè)布爾類(lèi)型的全局變量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;
這樣做能得到同樣的效果。
這個(gè)cancel只是對(duì)AsyncTask做了一些改變。一個(gè)AsyncTask可以在任何時(shí)候通過(guò)調(diào)用cancel(true)執(zhí)行取消操作,但是這個(gè)方法只是使AsyncTask的isCancelled()返回true,在調(diào)用cancel之后,這個(gè)AsyncTask的 onCancelled(Object) 方法將會(huì)取代 onPostExcute(Object) 方法作為doInBackground 方法return時(shí)候的調(diào)用方法,所以為了及時(shí)的停止當(dāng)前的任務(wù),就需要在doInBackground 的任務(wù)中時(shí)刻檢測(cè) isCancelled,然后手動(dòng) return,直接跳過(guò)當(dāng)前的任務(wù)
行云流水V 提問(wèn)者
BINGO人生 回復(fù) 行云流水V 提問(wèn)者
舉報(bào)
了解Android中AsyncTask的使用方法,掌握異步線程的使用
Copyright ? 2025 imooc.com All Rights Reserved | 京ICP備12003892號(hào)-11 京公網(wǎng)安備11010802030151號(hào)
購(gòu)課補(bǔ)貼聯(lián)系客服咨詢優(yōu)惠詳情
慕課網(wǎng)APP您的移動(dòng)學(xué)習(xí)伙伴
掃描二維碼關(guān)注慕課網(wǎng)微信公眾號(hào)
2022-03-23
跟我的一模一樣,至今不知道怎么解決,你搞定了嗎?親,什么兩個(gè)$a,我查了一下沒(méi)有找到,你可以詳細(xì)把語(yǔ)句打出來(lái)。
2017-02-17
我測(cè)試:cancel只相當(dāng)于一個(gè)標(biāo)記flag。
這里我沒(méi)設(shè)置cancel方法而是定義了一個(gè)布爾類(lèi)型的全局變量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
這個(gè)cancel只是對(duì)AsyncTask做了一些改變。一個(gè)AsyncTask可以在任何時(shí)候通過(guò)調(diào)用cancel(true)執(zhí)行取消操作,但是這個(gè)方法只是使AsyncTask的isCancelled()返回true,在調(diào)用cancel之后,這個(gè)AsyncTask的 onCancelled(Object) 方法將會(huì)取代 onPostExcute(Object) 方法作為doInBackground 方法return時(shí)候的調(diào)用方法,所以為了及時(shí)的停止當(dāng)前的任務(wù),就需要在doInBackground 的任務(wù)中時(shí)刻檢測(cè) isCancelled,然后手動(dòng) return,直接跳過(guò)當(dāng)前的任務(wù)