(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) {
..
}
}
- Params,啟動任務執行的輸入參數
- Progress,後台任務執行的百分比
- Result,後台計算的結果類型
執行時,
若無輸入參數,可使用new TestTask().execute(0);
private class Task extends AsyncTask<Void, Void, Void> { ... }
沒有留言:
張貼留言