-
異步任務(wù):asynctask?
why:android 單線程,耗時任務(wù)不能放在主線程
能干什么:
在子線程中更新UI,封裝簡化異步操作
查看全部 -
AsyncTask可以在子線程中更新UI???
查看全部 -
這是異步操作別的回調(diào)方法
查看全部 -
異步任務(wù)————AsyncTask
1.為什么要異步
? Android單線程模型
? 耗時操作放在非主線程中執(zhí)行
2.AsyncTask為何而生
? 子線程中更新UI
? 封裝、簡化異步操作
構(gòu)建AsyncTask子類的參數(shù)
AsyncTask<Params,Progress,Result>是一個抽象類
通常用于被繼承,繼承AsyncTask需要指定如下三個泛型參數(shù):
1.Params:啟動任務(wù)時輸入的參數(shù)的類型。
2.Progress:后臺任務(wù)執(zhí)行中返回進(jìn)度值的類型。
3.Result:后臺執(zhí)行任務(wù)完成后返回結(jié)果的類型。
查看全部 -
AsyncTask子類回調(diào)方法調(diào)用順序:
onPreExecute(),
doInBackground(),
onProgressUpdate(),
onPostExecute()
查看全部 -
構(gòu)建AsyncTask子類的回調(diào)方法
dolnBackground:必須重新,異步執(zhí)行后臺線程將要完成的任務(wù)
onPreExecute:執(zhí)行后臺耗時操縱前被調(diào)用,完成初始化操作
onPostExecute:當(dāng)dolnBackground()完成后,系統(tǒng)自動調(diào)用,并將dolnBackground()方法返回的值傳給該方法
onProgressUpdate:在dolnBackground()方法中調(diào)用publishProgress()方法更新任務(wù)的執(zhí)行進(jìn)度后,會觸發(fā)該方法。
查看全部 -
cancel()方法只是將對應(yīng)的AsyncTask標(biāo)記位cancel狀態(tài),并不是真正取消AsyncTask,需要在doInBackground方法中去調(diào)用isCanceled()方法檢查狀態(tài)
查看全部 -
必須在UI線程中創(chuàng)建AsyncTask實例
如截圖
查看全部 -
class?MyAsyncTask?extends?AsyncTask<Void,?Integer,?Void>?{ ????@Override ????protected?Void?doInBackground(Void...?params)?{ ????????for?(int?i?=?0;?i?<?100;?i?++)?{ ????????????publishProgress(i); ????????????try?{ ????????????????Thread.sleep(300); ????????????}?catch?(InterruptedException?e)?{ ????????????????e.printStackTrace(); ????????????} ????????} ????????return?null; ????} ????@Override ????protected?void?onProgressUpdate(Integer...?values)?{ ????????super.onProgressUpdate(values); ????????progressBar.setProgress(values[0]); ????} }
查看全部 -
class?MyAsyncTask?extends?AsyncTask<String,?Void,?Bitmap>?{ ????@Override ????protected?Bitmap?doInBackground(String...?params)?{ ????????//1、獲取傳遞進(jìn)來的參數(shù) ????????String?url?=?params[0]; ????????Bitmap?bitmap?=?null; ????????URLConnection?connection; ????????InputStream?is; ????????try?{ ????????????connection?=?new?URL(url).openConnection(); ????????????is?=?connection.getInputStream(); ????????????BufferedInputStream?bis?=?new?BufferedInputStream(is); ????????????//通過decodeStream方法解析輸入流 ????????????bitmap?=?BitmapFactory.decodeStream(bis); ????????????is.close(); ????????????bis.close(); ????????}?catch?(IOException?e)?{ ????????????e.printStackTrace(); ????????} ????????//將bitmap作為返回值 ????????return?bitmap; ????} }
查看全部 -
doinBackground 運行在其他線程,而其他的三個方法運行在主線程,可以更新UI。
查看全部 -
AsyncTask.cacel()只是將線程標(biāo)記成cancel狀態(tài),并不是真的取消掉一個線程。
查看全部 -
AsyncTask<Params,Progess,Result> 是一個抽象類,通常用于被繼承,繼承AsyncTask需要指定如下三個泛型參數(shù): 1、Params:啟動任務(wù)時輸入的參數(shù)類型。 2、Progress:后臺任務(wù)執(zhí)行中返回進(jìn)度值的類型 3、Result:后臺執(zhí)行任務(wù)完成后發(fā)回結(jié)果的類型查看全部
-
回調(diào)方法 doInbackground 必需重寫 異步執(zhí)行后臺線程將要完成的任務(wù) onPreExecute 執(zhí)行后臺耗時操作前調(diào)用 通常用戶完成一些初始化操作 onPostExecute 當(dāng)doInbackground 完成后 系統(tǒng)會自動調(diào)用OnPostExecute 方法 并將doInbackground方法返回的值傳給該方法 onprogressupdate 在dibg 方法中調(diào)用該方法 更新任務(wù)的執(zhí)行進(jìn)度后 會觸發(fā)該方法查看全部
-
訪問網(wǎng)絡(luò)圖片轉(zhuǎn)化成bitmap查看全部
舉報