AsyncTask是官方提供的流程架構
讓你方便的處理任務上的在UI和Worker Thread的狀況
AsyncTask<Params, Progress, Result>
參數部分
Params : 輸入參數的傳入值, 並且在doInBackground內被傳入可使用
Progress : 用來更新處理進度, 用pulishProgress傳入onProgressUpdate內
Result : 在執行完doInBackground後, return的值, 會傳到onPostExecute內
而在內部有四個常用的method
onPreExecute() : 在UI Thread執行, 在任務執行前會先進入, 通常用來放執行前的Progress bar
doInBackground(Params... params) : 在Worker Thread執行, 用來處理繁重的工作
onPostExecute(Result result) : 在UI Thread執行. 任務執行完後最後回執行, 可用來顯示結果和關閉Progress bar
onProgressUpdate(Progress... progress) : 在UI Thread執行, 可用pulishProgress來傳入參數和呼叫
最後AsyncTask用 .execute(Params) 來使用
1. 官網https://developer.android.com/reference/android/os/AsyncTask.html
2. 先宣告一個class繼承AsyncTask, 並且Implement其methods
3. 然後在用override的方式把method給取出
onPreExecute在一開始就會執行, 跑在UI Thread
onPostExecute則是全部做完時才會被呼叫
4. 繁重工作會在doInBackground內執行
可以呼叫publishProgress後在onProgressUpdate更新畫面
5. 最後用Task, execute來執行Task
doInBackground