一、AsyncTask的作用:
代替Thread+Handler的組合,使創(chuàng)建異步任務(wù)變得簡(jiǎn)單,
Android中AsyncTask使用
。AsyncTask執(zhí)行后臺(tái)操作,并在用戶界面上發(fā)布結(jié)果,而不必處理線程。
二、AsyncTask的定義:
public abstract class AsyncTask
AsyncTask必須子類可以使用。子類將覆蓋至少一個(gè)方法(doInBackground執(zhí)行異步任務(wù)),通常會(huì)覆蓋一次(onPostExecute顯示結(jié)果,更新UI)
AsyncTask三種類型如下:
》Params,參數(shù)的類型發(fā)送到任務(wù)執(zhí)行時(shí)。
》Progress,在后臺(tái)計(jì)算過(guò)程中公布的進(jìn)度單元類型。
》Result,計(jì)算結(jié)果的類型。
不是所有類型都是異步任務(wù)所使用的。要標(biāo)記為未使用的類型,設(shè)置該類型Void:
三、AsyncTask的方法:
1、onPreExecute()
在任務(wù)開(kāi)始后立即調(diào)用,在UI線程執(zhí)行。這一步通常用于設(shè)置任務(wù),例如在用戶界面中初始化進(jìn)度條。
2、doInBackground(Params...)
后臺(tái)線程調(diào)用onPreExecute()完成后立即執(zhí)行。這一步后臺(tái)進(jìn)程執(zhí)行,可能會(huì)花費(fèi)很長(zhǎng)時(shí)間。
3、onProgressUpdate(Progress...)
調(diào)用publishProgress,在UI線程上執(zhí)行,
電腦資料
《Android中AsyncTask使用》(http://m.clearvueentertainment.com)。這種方法是用來(lái)顯示用戶進(jìn)度界面,后臺(tái)進(jìn)程仍在執(zhí)行。例如,它可用于顯示一個(gè)進(jìn)度條或在文本中顯示日志。4、onPostExecute(Result)
后臺(tái)進(jìn)程處理完后,在UI線程上執(zhí)行。后臺(tái)進(jìn)程的結(jié)果被傳遞到這一步作為參數(shù)。
常用的寫法如下:
class MyTask extends AsyncTask<String, Integer, String> { @Override protected String doInBackground(String... params) { //執(zhí)行異步任務(wù) int n = 10; //調(diào)用publishProgress公布進(jìn)度,最后onProgressUpdate方法將被執(zhí)行 publishProgress(n); Thread.sleep(500); return null; } @Override protected void onPostExecute(String result) { //更新UI,顯示結(jié)果 } @Override protected void onProgressUpdate(Integer... values) { //更新進(jìn)度信息 }
new MyTask().execute();//執(zhí)行任務(wù)
三、AsyncTask的規(guī)則:
1、任務(wù)實(shí)例必須在用戶界面線程中創(chuàng)建。
2、execute(Params... params)方法必須在UI線程中調(diào)用。
3、不要手動(dòng)調(diào)用onPreExecute,doInBackground,onProgressUpdate,onPostExecute這些方法
4、一個(gè)任務(wù)實(shí)例只能執(zhí)行一次,如果執(zhí)行第二次將會(huì)拋出異常