example1:用法
public class FullTask extends AsyncTask<Params, Progress, Result> {
@Override protected void onPreExecute() {
super.onPreExecute();
}
@Override
protected Object doInBackground(Params params) {
return null;
}
@Override
protected void onProgressUpdate(Progress... params) {
super.onProgressUpdate(params);
}
@Override
protected void onPostExecute(Result result) {
super.onPostExecute(result);
}
@Override
protected void onCancelled(Result result) {
super.onCancelled(result);
}
}
Params:輸入背景任務資料。 Progress:在onProgressUpdate中,由背景Thread(亦即,由doInBackground)向UI Thread報告進度資料。 Result:由背景Thread產生並且背送到UI Thread結果。
//開始任務
FullTask task = new FullTask().excute(/* 省略 */);
//取消任務
task.cancel(true);
example2:將AsyncTack限制執行為一次一個
//從UI Thread裡的按鈕點擊觸發onClick()方法,執行限制AsyncTask為一次一個
public class AsyncTaskStatusActivity extends Activity {
private AsyncTask mMyAsyncTask;
// 省略Activity生命週期code
public void onExecute(View v) {
if (mMyAsyncTask != null && mMyAsyncTask.getStatus() != AsyncTask.Status.RUNNING) {
mMyAsyncTask = new MyAsyncTask.execute();
}
}
private static class MyAsyncTask extends AsyncTask<String, Void, Void> {
@Override protected Void doInBackground(String... params) {
if (!isCancelled()) //開始執行下一個任務之前檢查任務是否被取消,好讓任務能夠盡早被終止。
//省略細節
return null;
}
}
}