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;
  }
 }
}

results matching ""

    No results matching ""