簡介
Android給我們提供了一種輕量級的異步任務類AsyncTask。該類中實現(xiàn)異步操作,并提供接口反饋當前異步執(zhí)行結果及進度,這些接口中有直接運行在主線程中的(如 onPostExecute,onPreExecute等)。
AsyncTask可以輕松正確的使用UI線程,這個類允許你在后臺操作,并且不需要使用threads或者handler將結果發(fā)布到UI線程。
AsyncTask設計之初就是輔助Thread和Handler的,并且不會生成線程。AsyncTask應該被用于短時間內(nèi)的操作(最多幾秒鐘),如果你想要長時間保持線程運行,請使用Executor或者ThreadPoolExecutor或者FutureTask。
AsyncTask在后臺運行任務,在UI線程發(fā)布結果,定義三個參數(shù),Params, Progress和Result,執(zhí)行四個步驟,onPreExecute, doInBackground, onProgressUpdate和onPostExecute。
使用方法
AsyncTask必須被繼承來使用。子類必須實現(xiàn)至少一個方法(ddoInBackground(Params…))
,還有一個最常用的方法(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://jinyejixie.com/article10/ddsedo.html
成都網(wǎng)站建設公司_創(chuàng)新互聯(lián),為您提供ChatGPT、用戶體驗、網(wǎng)站內(nèi)鏈、面包屑導航、微信小程序、域名注冊
聲明:本網(wǎng)站發(fā)布的內(nèi)容(圖片、視頻和文字)以用戶投稿、用戶轉(zhuǎn)載內(nèi)容為主,如果涉及侵權請盡快告知,我們將會在第一時間刪除。文章觀點不代表本網(wǎng)站立場,如需處理請聯(lián)系客服。電話:028-86922220;郵箱:631063699@qq.com。內(nèi)容未經(jīng)允許不得轉(zhuǎn)載,或轉(zhuǎn)載時需注明來源: 創(chuàng)新互聯(lián)
猜你還喜歡下面的內(nèi)容