使用AsyncTask類遵守的準(zhǔn)則:
網(wǎng)站設(shè)計(jì)制作過程拒絕使用模板建站;使用PHP+MYSQL原生開發(fā)可交付網(wǎng)站源代碼;符合網(wǎng)站優(yōu)化排名的后臺(tái)管理系統(tǒng);網(wǎng)站設(shè)計(jì)制作、網(wǎng)站制作收費(fèi)合理;免費(fèi)進(jìn)行網(wǎng)站備案等企業(yè)網(wǎng)站建設(shè)一條龍服務(wù).我們是一家持續(xù)穩(wěn)定運(yùn)營(yíng)了十多年的創(chuàng)新互聯(lián)網(wǎng)站建設(shè)公司。
1 Task的實(shí)例必須在UI thread中創(chuàng)建;
2 Execute方法必須在UI thread中調(diào)用;
3 不要手動(dòng)的調(diào)用onPfreexecute(),onPostExecute(result)Doinbackground(params…),onProgressupdate(progress…)這幾個(gè)方法;
4 該task只能被執(zhí)行一次,否則多次調(diào)用時(shí)將會(huì)出現(xiàn)異常;
AsyncTask的整個(gè)調(diào)用過程都是從execute方法開始的,一旦在主線程中調(diào)用execute方法,就可以通過onpreExecute方法,這是一個(gè)預(yù)處理方法,比如可以在這里開始一個(gè)進(jìn)度框,同樣也可以通過onprogressupdate方法給用戶一個(gè)進(jìn)度條的顯示,增加用戶體驗(yàn);最后通過onpostexecute方法,相當(dāng)于handler處理UI的方式,在這里可以使用在doinbackground得到的結(jié)果處理操作UI。此方法在主線程執(zhí)行,任務(wù)執(zhí)行的結(jié)果作為此方法的參數(shù)返回。
此外,AsyncTask底層是一個(gè)線程池 而Handler僅僅就是發(fā)送了一個(gè)消息隊(duì)列,連線程都沒有開。但是,如果異步任務(wù)的數(shù)據(jù)特別龐大,AsyncTask這種線程池結(jié)構(gòu)的優(yōu)勢(shì)就體現(xiàn)出來了。