Trong bài tập này Tui muốn trình bày một kỹ thuật mới đó là cách xử lý bằng AsyncTask. Nó hơi hơi phức tạp 1 xí , nhưng cũng không có khó khăn gì … Sự tình là bạn hãy làm đi làm lại Hai ba lần để hiểu thấu triệt về kỹ thuật này. Khi đã hiểu rồi thì bạn không thèm dùng Handler class nữa mà nên dùng luôn AsyncTask. Đặc biệt khi xử lý đa tiến trình nhưng mà muốn thẩm tra Cuối cùng trả về của tiến trình thì ta phải dùng AsyncTask.
Tui sẽ trình bày đại khái về lý thuyết của AsyncTask trước khi vào những giá dụ cụ thể trong bài hoc android
Bạn xem hình chụp 1 sau ( bạn nhìn vào các đường mũi tên trỏ các parameter ):
và hình số 2 sau như ( nhìn vào các đường chỉ parameter ):
– Trong bài học lập trình android Tui sẽ giải thích kỹ về Sự tình này:
Trong AsyncTask có 3 đối số là các Generic Type:
Params: Là giá trị ( ( biến ) được truyền vào khi gọi thực thi tiến trình và nó sẽ được truyền vào doInBackground
Progress: Là giá trị ( biến ) dùng để update giao diện diện lúc tiến trình thực thi , biến này sẽ được truyền vào hàm onProgressUpdate.
Result: Là biến dùng để lưu trữ Cuối cùng trả về sau khi tiến trình thực hiện xong.
Những đối số nào không sử dụng trong quá trình thực thi tiến trình thì ta thay bằng Void.
bình thường trong 1 AsyncTask sẽ chứa 4 hàm , đó là :
onPreExecute( ) : Tự động được gọi hàng đầu khi tiến trình được kích hoạt.
doInBackground( ): Được thực thi trong quá trình tiến trình chạy nền , thông qua hàm này để ta gọi hàm onProgressUpdate để cập nhật giao diện ( gọi lệnh publishProgress ). Ta không thể cập nhật giao diện trong hàm doInBackground( ).
Xem thêm tài liệu >>> học lập trình android ở đâu tốt nhất
onProgressUpdate ( ): Dùng để cập nhật giao diện lúc runtime
onPostExecute( ): Sau khi tiến trình chấm dứt thì hàm này sẽ tự động sảy ra. Ta có thể lấy được Cuối cùng trả về sau khi thực hiện tiến trình chấm dứt ở đây.
Trong 4 hàm trên thì hàm doInBackground( ) buộc phải tồn tại , còn các hàm khác có thể khuyết , nhưng theo Tui các bạn nên sử dụng bĩ bàng 4 hàm đã nêu.
Đối với AsyncTask thì ta cần tạo một lớp kế thừa từ AsyncTask , sau đó từ MainActivity ta gọi hàm execute( ) của tiến trình này là OK.
|