2月 18, 2020 Android
### 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
		}
	};
}
```
過去文章
2025 (9)
4 (5)
3 (1)
2 (3)
2024 (25)
11 (3)
10 (3)
9 (1)
3 (18)
2022 (6)
10 (1)
6 (2)
5 (1)
3 (1)
1 (1)
2021 (21)
11 (7)
7 (1)
6 (2)
5 (2)
4 (6)
3 (2)
2 (1)
2020 (92)
12 (1)
11 (2)
10 (4)
9 (10)
8 (5)
7 (1)
6 (3)
5 (1)
4 (4)
3 (25)
2 (7)
1 (29)
2019 (57)
12 (25)
11 (7)
9 (25)