ASYNCTASK TRONG ANDROID

1. Giới thiệu Asytask.


Nếu bạn nào đã xài Android từ rất lâu rồi cái thời Android mới được bang chủ Google giới thiệu với các đồng đạo và nhân sĩ võ lâm giang hồ bí kíp Android thần chưởng thì bạn hẳn còn nhớ khi bạn dùng một số ứng dụng như nghe nhạc hay xem phim trực tuyến khi bạn nhấn vào một nút chức năng nào đó trên ứng dụng thì ứng dụng thi thoảng sẽ bị treo hay hoạt động không ổn định và điều này đã được tâu bẩm lện bang chủ Google và bang chủ đã tìm ra nguyên nhân của nó đó chính là do các tác vụ của ứng dụng đó cùng hoạt động trên một theard và các tác vụ nào dài hơi sẽ có thể gây ra hiện tượng ứng dụng sẽ bị treo hay thậm chí là chết vì lúc đó ứng dụng có nhiều tác vụ chạy cùng một theard quá sẽ tốn rất nhiều tài nguyên hệ thống, vậy giải pháp nào cho vấn đề trên sau khi nghiên cứu và bàn luận cùng các đồng lão trong bang phái Google bang chủ đã ra mắt một chiêu thức mới đó là Asynctask vậy chiêu thức đó nguyên lí hoạt động như thế nào.

2. Nguyên lí hoạt động của Asynctask.


Trước đây các phiên bản của bí kíp Android ngày trước thì chưa được thiết kế để chạy đa luồng tức là trong một lần thì triển võ công không thể xuất ra nhiều chiêu thức cùng lúc được mà trong một lần thi triển võ công nếu có nhiều chiêu thức thì các chiêu thức này sẽ được xuất ra tuần tự và theo thứ tự của các chiêu thức và việc này sẽ làm chậm thời gian xuất chiêu và tiêu tốn nhiều công lực mà không mang lại nhiều hiệu quả vì thế mà các phiên bản sau của bí kíp các đồng lão của bang phái đã nâng cấp cho bí kíp có khả năng chạy đa luồng có thể xuất nhiều chiêu thức cùng lúc thông qua chiêu thức Asynctask.

Hiện nay Android được chia ra làm hai luồng riêng biệt là UI(Main) theard và background theard luồng UI theard là luồng mà xử lí các tác vụ về giao diện người dùng còn background theard chính là tầng xử lý các tác vụ nền, đây cũng chính là nơi xỷ lí các chiêu thức nặng và phức tạp cần thời gian lâu hơn để xử lí và nhờ có Asynctask mà khi thực hiện các tác vụ nặng ứng dụng sẽ không còn tình trạng treo ứng dụng hay giao diện hoạt động không ổn định hay không mượt mà nữa. vậy làm cách nào để sử dụng AsyncTask.

3. Sử dụng Asytask.


Trước khi vào vị dụ tôi muốn nói với các bạn một số điều:

Bạn nhìn vào hình sau

Asynctask

Asynctask

Như bạn thấy trên hình khi tạo class kế thừ Asynctask class thì ta thấy Asynctask class sẽ có 3 đối số generic được truyền vô theo thứ tự là AsyncTask<Params, Progress, Result>.

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ữ kết quả trả về sau khi tiến trình thực hiện xong.

Và thông thường một AsyncTask sẽ có 4 hàm:

onPreExecute() : Tự động được gọi đầu tiên 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().

onProgressUpdate (): Dùng để cập nhật giao diện lúc runtime

onPostExecute(): Sau khi tiến trình kết thúc thì hàm này sẽ tự động sảy ra. Ta có thể lấy được kết quả trả về sau khi thực hiện tiến trình kết thúc ở đây.

Trong 4 hàm trên thì hàm doInBackground() bắt buộc phải tồn tại, còn các hàm khác có thể không có cũng được.

Khi muốn thực thi tiến trình thì tại activity ta goi hàm execute() là có thể thực thi tiến trình rồi.

Sau đây là 1 ví dụ đơn giản.

Ví dụ:

Ở ví dụ này tôi sử dụng Progressbar cho nó dễ thấy 😀

File activity_main.xml

File MainActivity.java

Như vậy tôi đã giới thiệu với các bạn về Asyntask và các thực thi đa tiến trinh bằng Asynctask trong Android. Cảm ơn các bạn đã theo dõi và hẹn gặp lại các bạn ở những bài tiếp theo của series Android truyền kì.

4. Tổng kết


Bài viết khác

Hồ Diên Lợi
Đến với CNTT là tình cờ, tuy nhiên khi đã tham gia rồi thì mới biết đây chính là đam mê, hy vọng dịch bệnh Covid-19 sẽ qua, để chia sẽ đam mê công nghệ đến nhiều người hơn!

DANH SÁCH BÀI HỌC