### Android AsyncTask 今日收到一位同事問起,如果 HTTP Request 是多於一個時,要如何 Handle Progress 的生命週期 ? 雖然筆者沒有在網上再找找解決方法,不過以經驗去理解應該和處理一個 HTTP Request 也差不多,以下寫了一段 DEMO CODE 來實作這個事情 (沒有測試過能否運行的)。 另外也放到了 GIST : https://gist.github.com/19Site/39a6d1c40794de16dfd97f2da7ef9f16 ### Demo Code 以下是 Demo Code ```java public static void main(String... args) { AsyncTask<String, Integer, Boolean> task = new AsyncTask<String, Integer, Boolean>() { // loading dialog AlertDialog dialog = (new AlertDialog.Builder(context)).setCancelable(false).setMessage("loading").create(); @Override protected Boolean doInBackground(String... strings) { publishProgress(1); doHttp1(); publishProgress(2); doHttp2(); publishProgress(3); doHttp3(); publishProgress(4); return true; } @Override protected void onPostExecute(Boolean aBoolean) { super.onPostExecute(aBoolean); // todo } @Override protected void onProgressUpdate(Integer... values) { super.onProgressUpdate(values); switch (values[0]) { case 1: dialog.show(); case 2: case 3: dialog.setMessage("progress " + values[0]); break; case 4: default: dialog.dismiss(); } } private void doHttp1() { // do http request } private void doHttp2() { // do http request } private void doHttp3() { // do http request } }; } ```