AsyncTask Android là gì? 4 bước triển khai AsyncTask trong Android

Lúc dùng 1 ứng dụng trên Android, đôi lúc bạn sẽ gặp cần tình trạng “Software Not Responding”. Phần lớn khách hàng nghĩ rằng đây là tình trạng app bị treo, đứng máy hay lag. Tuy nhiên, vẫn còn 1 nguyên nhân khác dẫn tới tình trạng này. Ấy là do UI Thread. Đối sở hữu nguyên nhân này, ta sẽ có giải pháp xử lý là AsyncTask. Vậy, AsyncTask Android là gì?

Tìm hiểu về AsyncTask Android

Hiện tượng “Software Not Responding” là gì?

Trong hệ điều hành Android, mỗi ứng dụng sẽ được hệ điều hành phân phối cho 1 course of và trên ấy có 1 thread mặc định của ứng dụng. Android xử lý hầu hết những tác vụ, tiến trình trên 1 thread duy nhất được gọi là Most important UI thread. Most important UI thread chỉ khiến 1 việc trong sự kiện/process duy nhất trong tại 1 thời điểm.

1 process tốn nhiều thời kì trên Most important UI thread sẽ dẫn tới tình trạng Android sẽ nhảy ra 1 thông tin có tên là: Software Not Responding (hay thường biết tới sở hữu cái tên ARN).

Thông thường, những tác vụ hao tốn nhiều tài nguyên như: giải nén file hoặc tải file từ Web,… những tác vụ này cần cần thác khỏi Most important UI thread. Nói bí quyết khác, ta sẽ cần cần tạo ra xử lý đa nhiệm. Để thực hành xử lý đa nhiệm ta có 1 số công cụ do Android cấp sẵn để dùng như:

  • Dùng Thread
  • Dùng Loader trong Android
  • Dùng IntentService
  • Hoặc dùng tới AsyncTask trong Android.

AsyncTask Android là gì?

Về lý thuyết, AsyncTask Android là 1 summary Android class giúp Android trở nên “đa nhiệm” hơn lúc xử lý fundamental UI thread 1 bí quyết hiệu quả. Bạn có thể dùng AsyncTask Android trong Android để thực hành những tác vụ dài mà ko khiến tương tác tới fundamental UI thread.

Xem Thêm  [Thành công 100%] Phương pháp sửa lỗi máy tính, laptop computer ko kết nối được Wifi

AsyncTask xuất hiện từ phiên bản API Stage 3 trong Android, sở hữu mục đích đưa ra 1 tiêu chuẩn khiến việc sở hữu fundamental UI thread dễ dàng hơn.

AsyncTask được thiết kế như 1 class trợ giúp cho Thread và Handler, được dùng trong những hoạt động ngắn khoảng vài giây. Trường hợp bạn muốn tạo luồng dài khá hơn, bạn nên dùng những class do java.util.concurrent phân phối như: Executor, ThreadPoolExecutor hay FutureTask.

Trong bài viết sẽ giữ nguyên nhiều từ tiếng Anh như:

  • Class: lớp
  • Course of: được sinh ra lúc Android chạy và những ứng dụng trong Android đều được cấp 1 Course of để thực thi.
  • Thread: là 1 thực thể trong Course of và là đối tượng lên kế hoạch thực thi.
  • Handler: là 1 hợp tác/ trao đổi được sinh ra trong quá trình những Thread trao đổi sở hữu nhau hoặc Thread sinh ra Handler.
  • Summary: trừu tượng
  • Process: tác vụ
  • Occasion: sự kiện
  • Background: nền, trong bài sẽ ngầm hiểu là: chạy tác vụ dưới nền

Lúc nào nên dùng AsyncTask Android

Thật sự, những thứ liên quan tới Summary siêu khó hiểu. Vì thế, Tino Group sẽ giải thích về AsyncTask Android là gì cùng trường hợp dùng AsyncTask trong Android nhé!

Dí dụ, bạn đang tải 1 file nhạc MP3 về thiết bị Android. Quá trình này diễn ra siêu đơn giản trong mắt khách hàng nhưng dưới nền, Android lại hoạt động siêu phức tạp. Bạn có thể theo dõi sơ đồ sau để thấy quá trình tải 1 file MP3 là ko hề đơn giản.

Điều này dẫn tới hệ lụy, lúc chờ “hết thanh xuân” để máy chủ gửi file MP3 về, ứng dụng của bạn sẽ bị treo và hiện lên thông tin “Software Not Responding” vì lúc này fundamental Thread vẫn đang chờ cho process tải MP3 hoàn thành.

Xem Thêm  Infinity (NFT) là gì? Toàn tập về tiền điện tử NFT Token

Trường hợp điều này diễn ra thường xuyên, bản thân bạn có còn muốn tải nhạc về máy để nghe nữa hay ko? Dĩ nhiên là “ko” rồi đúng ko nào?

Vì thế, Android phân phối cho bạn 1 giải pháp chuyên dụng là class AsyncTask để tạo thêm 1 Thread mới và thực hành process trên Thread ấy giúp app ko bị treo => khách hàng ko tương tác => khách hàng sung sướng => bạn ko “charge” 1 sao cho ứng dụng hoặc khách hàng ko “charge” 1 sao cho ứng dụng của bạn.

1 câu hỏi tiếp theo được đặt ra là: khiến thế nào để triển khai AsyncTask trong Android?

Làm cho thế nào để triển khai AsyncTask trong Android?

4 bước triển khai AsyncTask trong Android

Lúc AsyncTask thực thi, process sẽ trải qua 4 bước như sau:

  • Bước 1 onPreExecute()
  • Bước 2 doInBackground()
  • Bước 3 onProgressUpdate()
  • Bước 4 onPostExecute()

Chúng ta cùng nhau tìm hiểu chi tiết trong từng bước thông qua dí dụ tải file nhé! Trước tiên, bạn hãy tham khảo đoạn code mẫu dưới đây:

Bước 1: onPreExecute()

onPreExecute() sẽ được gọi trên UI thread lúc process khởi đầu. Đây là bước cơ bản để khởi đầu quá trình chuẩn bị thực hành 1 process. Dí dụ cụ thể nhất là dùng để tạo ra 1 thanh thông tin cho khách hàng về % dữ liệu đã tải về.

Bước 2: doInBackground()

doInBackground() sẽ thực hành nối tiếp dưới background sở hữu onPreExecute() ngay lúc bước này hoàn thành. Vì doInBackground() hoạt động trên 1 Thread riêng sở hữu UI Thread. Do ấy, bạn sẽ ko thể và ko được phép cập nhật giao diện tính toán quá trình ở đây.

Trường hợp bạn muốn thực hành bạn sẽ cần cần dùng 1 hàm khác để hiển thị. Như trong dí dụ, hàm publishProgress(Progress…) sẽ là hàm được dùng để hiển thị % information đã tải về thiết bị.

Bước 3: onProgressUpdate()

onProgressUpdate() sẽ thực hành nối tiếp theo publishProgress(Progress…) trên UI Thread. Thời kì thực hành bước này là ko xác định.

Xem Thêm  Stochastic là gì? Phương pháp thanh toán có Stochastic

Phương thức này được dùng để hiển thị bất cứ hình dạng nào trong giao diện khách hàng lúc dưới nền vẫn đang thực hành tính toán, dí dụ như bạn có thể tạo hiệu ứng cho thanh hiển thị % tải về hoặc hiển thị nhật ký tải về (giống như đoạn tải về trong IDM) bằng những văn bản.

Bước 4: onPostExecute()

onPostExecute() sẽ được gọi lúc công việc tính toán của doInBackground() đã hoàn thành và kết thúc. Kết quả tính toán sẽ hiển thị dưới dạng 1 tham số và trả lên giao diện của khách hàng.

Bên cạnh ra, bạn có thể dùng cancel(boolean) để tạm ngừng tại 1 thời điểm bất kỳ lúc AsyncTask đang thực hành công việc, mà ko cần cần chờ AsyncTask hoàn thành toàn bộ công việc.

Tới đây, Tino Group đã hoàn thành việc giải đáp AsyncTask Android là gì cũng như giải thích 4 bước triển khai AsyncTask trong Android bằng dí dụ trực quan và dễ hiểu nhất có thể. Trường hợp bạn vẫn chưa hiểu, chuyện này vẫn bình thường lúc khiến việc sở hữu những Summary. Bên cạnh ra, bạn có thể tham khảo tài liệu chính thức của Google về AsyncTask Android tại đây.

Cuối cùng, Tino Group xin chúc bạn sẽ có những gặt hái thành công lớn trong tương lai sở hữu sự nghiệp lập trình Android bạn đang theo đuổi!

Bài viết có tham khảo từ nhiều nguồn: vntalking, Developer Android, open planning,…

Những câu hỏi thường gặp về AsyncTask Android

CÔNG TY CỔ PHẦN TẬP ĐOÀN TINO

  • Trụ sở chính: L17-11, Tầng 17, Tòa nhà Vincom Heart, Số 72 Lê Thánh Tôn, Phường Bến Nghé, Quận 1, Thành phố Hồ Chí MinhVăn phòng đại diện: 42 Trần Phú, Phường 4, Quận 5, Thành phố Hồ Chí Minh
  • Điện thoại: 0364 333 333Tổng đài miễn chi phí: 1800 6734
  • Electronic mail: gross [email protected]
  • Web site: www.tino.org