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