android 中使用 AsyncTask

在Android 中有五秒的 ANR 限制
(ANR Application Not Responding的縮寫,簡單說,執行一件事情不能超過5秒,否則系統會跳出是否要停止app的訊息)

所以會執行較長時間的事情不能放在主線程中,
必需使用thread讓它在背景執行

在這裡介紹 AsyncTask
可以很簡單的使用,也提供了執行的前中後三個callback函式
在callback中可以改變界面或做其他的事情

以下是code

private class TestTask extends AsyncTask<Integer, Integer, Long> {
     protected Long doInBackground(Integer... input) {
         ..
         ..
     }

     protected void onProgressUpdate(Integer... progress) {
         ..
     }

     protected void onPostExecute(Long result) {
         ..
     }
 }
三種參數說明分別為
  1. Params,啟動任務執行的輸入參數
  2. Progress,後台任務執行的百分比
  3. Result,後台計算的結果類型

 執行時,

new TestTask().execute(0);
 若無輸入參數,可使用

private class Task extends AsyncTask<Void, Void, Void> { ... }

沒有留言:

張貼留言