簡介
目前創(chuàng)新互聯(lián)已為1000+的企業(yè)提供了網(wǎng)站建設(shè)、域名、網(wǎng)頁空間、網(wǎng)站托管維護(hù)、企業(yè)網(wǎng)站設(shè)計、武漢網(wǎng)站維護(hù)等服務(wù),公司將堅持客戶導(dǎo)向、應(yīng)用為本的策略,正道將秉承"和諧、參與、激情"的文化,與客戶和合作伙伴齊心協(xié)力一起成長,共同發(fā)展。Android給我們提供了一種輕量級的異步任務(wù)類AsyncTask。該類中實現(xiàn)異步操作,并提供接口反饋當(dāng)前異步執(zhí)行結(jié)果及進(jìn)度,這些接口中有直接運行在主線程中的(如 onPostExecute,onPreExecute等)。
AsyncTask可以輕松正確的使用UI線程,這個類允許你在后臺操作,并且不需要使用threads或者h(yuǎn)andler將結(jié)果發(fā)布到UI線程。
AsyncTask設(shè)計之初就是輔助Thread和Handler的,并且不會生成線程。AsyncTask應(yīng)該被用于短時間內(nèi)的操作(最多幾秒鐘),如果你想要長時間保持線程運行,請使用Executor或者ThreadPoolExecutor或者FutureTask。
AsyncTask在后臺運行任務(wù),在UI線程發(fā)布結(jié)果,定義三個參數(shù),Params, Progress和Result,執(zhí)行四個步驟,onPreExecute, doInBackground, onProgressUpdate和onPostExecute。
使用方法
AsyncTask必須被繼承來使用。子類必須實現(xiàn)至少一個方法(ddoInBackground(Params…))
,還有一個最常用的方法(onPostExecute(Result)
。
private class DownloadFilesTask extends AsyncTask{ 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"); } }