簡介

Android給我們提供了一種輕量級的異步任務(wù)類AsyncTask。該類中實(shí)現(xiàn)異步操作,并提供接口反饋當(dāng)前異步執(zhí)行結(jié)果及進(jìn)度,這些接口中有直接運(yùn)行在主線程中的(如 onPostExecute,onPreExecute等)。
AsyncTask可以輕松正確的使用UI線程,這個(gè)類允許你在后臺操作,并且不需要使用threads或者h(yuǎn)andler將結(jié)果發(fā)布到UI線程。
AsyncTask設(shè)計(jì)之初就是輔助Thread和Handler的,并且不會生成線程。AsyncTask應(yīng)該被用于短時(shí)間內(nèi)的操作(最多幾秒鐘),如果你想要長時(shí)間保持線程運(yùn)行,請使用Executor或者ThreadPoolExecutor或者FutureTask。
AsyncTask在后臺運(yùn)行任務(wù),在UI線程發(fā)布結(jié)果,定義三個(gè)參數(shù),Params, Progress和Result,執(zhí)行四個(gè)步驟,onPreExecute, doInBackground, onProgressUpdate和onPostExecute。
使用方法
AsyncTask必須被繼承來使用。子類必須實(shí)現(xiàn)至少一個(gè)方法(ddoInBackground(Params…)) ,還有一個(gè)最常用的方法(onPostExecute(Result) 。
private class DownloadFilesTask extends AsyncTask<URL, Integer, Long> {
protected Long doInBackground(URL... urls) {
int count = urls.length;
long totalSize = 0;
for (int i = 0; i < count; i++) {
totalSize += Downloader.downloadFile(urls[i]);
publishProgress((int) ((i / (float) count) * 100));
// Escape early if cancel() is called
if (isCancelled()) break;
}
return totalSize;
}
protected void onProgressUpdate(Integer... progress) {
setProgressPercent(progress[0]);
}
protected void onPostExecute(Long result) {
showDialog("Downloaded " + result + " bytes");
}
}
新聞名稱:AsyncTask官方文檔教程整理-創(chuàng)新互聯(lián)
網(wǎng)站路徑:http://www.jbt999.com/article10/ddsedo.html
成都網(wǎng)站建設(shè)公司_創(chuàng)新互聯(lián),為您提供ChatGPT、用戶體驗(yàn)、網(wǎng)站內(nèi)鏈、面包屑導(dǎo)航、微信小程序、域名注冊
聲明:本網(wǎng)站發(fā)布的內(nèi)容(圖片、視頻和文字)以用戶投稿、用戶轉(zhuǎn)載內(nèi)容為主,如果涉及侵權(quán)請盡快告知,我們將會在第一時(shí)間刪除。文章觀點(diǎn)不代表本網(wǎng)站立場,如需處理請聯(lián)系客服。電話:028-86922220;郵箱:[email protected]。內(nèi)容未經(jīng)允許不得轉(zhuǎn)載,或轉(zhuǎn)載時(shí)需注明來源: 創(chuàng)新互聯(lián)
猜你還喜歡下面的內(nèi)容