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

Khi sử dụng ứng dụng trên Android, đôi khi bạn sẽ gặp phải tình trạng "Ứng dụng không phản hồi". Hầu hết người dùng đều cho rằng đây là tình huống ứng dụng bị treo, đơ hoặc lag. Tuy nhiên, vẫn còn một nguyên nhân khác dẫn đến tình trạng này. Đó là do Chủ đề giao diện người dùng. Vì lý do này, chúng tôi sẽ có giải pháp AsyncTask. Vậy, AsyncTask Android là gì?

Tìm hiểu về AsyncTask Android

Hiện tượng “Ứng dụng không phản hồi” là gì?

Trong hệ điều hành Android, mỗi ứng dụng sẽ được hệ điều hành cung cấp cho một tiến trình và trên đó có một luồng mặc định của ứng dụng đó. Android xử lý tất cả các tác vụ và quy trình trên một luồng duy nhất được gọi là luồng Main UI. Chuỗi giao diện người dùng chính chỉ thực hiện một việc trong một sự kiện / nhiệm vụ duy nhất tại một thời điểm.

Một tác vụ mất nhiều thời gian trên chuỗi Giao diện người dùng chính sẽ dẫn đến việc Android nhảy một thông báo có tên: Ứng dụng không phản hồi (hoặc thường được gọi là.) RNA).

asynctask-android-la-gi

Thông thường, các tác vụ tiêu tốn nhiều tài nguyên như: giải nén tệp hoặc tải tệp xuống từ Internet, v.v., các tác vụ này cần được xóa khỏi chuỗi Main UI. Nói cách khác, chúng ta sẽ cần tạo đa nhiệm. Để thực hiện đa nhiệm, chúng tôi có sẵn một số công cụ do Android cung cấp để sử dụng như:

  • Sử dụng Chủ đề
  • Sử dụng Trình tải trong Android
  • Sử dụng IntentService
  • Hoặc sử dụng AsyncTask trong Android.

AsyncTask Android là gì?

Về mặt lý thuyết, AsyncTask Android Là một trừu tượng Lớp Android giúp Android trở nên "đa nhiệm" hơn khi xử lý luồng giao diện người dùng chính một cách hiệu quả. Bạn có thể sử dụng Android AsyncTask trong Android để thực hiện các tác vụ dài mà không làm ảnh hưởng đến chuỗi giao diện người dùng chính.

AsyncTask đã xuất hiện từ API Cấp 3 trong Android, với mục đích cung cấp một tiêu chuẩn giúp làm việc với chuỗi giao diện người dùng chính dễ dàng hơn.

asynctask-android-la-gi

AsyncTask được thiết kế như một lớp trợ giúp cho Thread và Handler, được sử dụng cho các hoạt động ngắn trong vài giây. Nếu bạn muốn tạo một luồng dài hơn, bạn nên sử dụng do. các lớp học java.util.concurrent được cung cấp như: Executor, ThreadPoolExecutor hoặc FutureTask.

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

  • Lớp: lớp
  • Tiến trình: được sinh ra khi Android chạy và các ứng dụng trong Android được cấp một Quy trình để thực thi.
  • Chủ đề: là một thực thể trong Process và là đối tượng lên lịch thực thi.
  • Người xử lý: là một liên kết / trao đổi được tạo ra trong quá trình các Thread trao đổi với nhau hoặc Thread spawning Handler.
  • trừu tượng: trừu tượng
  • Nhiệm vụ: hoạt động
  • Biến cố: Sự kiện
  • Tiểu sử: background, trong bài viết sẽ ngầm hiểu là: chạy tác vụ ở chế độ nền

Khi nào sử dụng AsyncTask Android

Thực sự những thứ liên quan đến Abstract rất khó hiểu. Vì vậy, thuthuatkiemtien.com sẽ giải thích AsyncTask Android là gì và trường hợp sử dụng của AsyncTask trong Android nhé!

Ví dụ: bạn đang tải một tệp nhạc MP3 xuống thiết bị Android của mình. Quá trình này rất đơn giản trước mắt người dùng, nhưng ở chế độ nền, Android hoạt động rất phức tạp. Bạn có thể theo dõi sơ đồ sau để thấy rằng quá trình tải một tập tin MP3 không hề đơn giản.

asynctask-android-la-gi

Điều này dẫn đến hậu quả, khi chờ đợi “hết tuổi thanh xuân” để máy chủ gửi file MP3, ứng dụng của bạn sẽ bị treo và hiển thị thông báo “Ứng dụng chưa phản hồi” vì lúc này chính Thread vẫn đang chờ tác vụ. để tải. Đã hoàn tất MP3.

Nếu điều này xảy ra thường xuyên, liệu bản thân bạn có còn muốn tải nhạc về nghe không? Tất nhiên là "không", phải không?

Do đó, Android cung cấp cho bạn một giải pháp chuyên dụng, lớp AsyncTask để tạo một Thread mới và thực hiện một tác vụ trên Thread đó để giữ cho ứng dụng không bị treo => người dùng không bị ảnh hưởng => người dùng hài lòng => bạn không “đánh giá” 1 sao cho ứng dụng của bạn hoặc người dùng không “xếp hạng” 1 sao cho ứng dụng của bạn.

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

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

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

Khi AsyncTask thực thi, nhiệm vụ 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 ()

Hãy cùng tìm hiểu chi tiết từng bước thông qua ví dụ tải xuống tệp! Đầu tiên, mời bạn tham khảo mẫu mã dưới đây:

asynctask-android-la-gi

Bước 1: onPreExecute ()

onPreExecute () sẽ được gọi trên chuỗi giao diện người dùng khi tác vụ bắt đầu. Đây là bước cơ bản để bắt đầu quá trình chuẩn bị cho một nhiệm vụ. Ví dụ cụ thể nhất được sử dụng để tạo một thanh thông báo cho người dùng về% dữ liệu đã tải xuống.

Bước 2: doInBackground ()

doInBackground () sẽ tuần tự hóa trong nền với onPreExecute () ngay sau khi bước này hoàn tất. Vì doInBackground () hoạt động trên một Luồng riêng biệt với Luồng giao diện người dùng. Do đó, bạn sẽ không và sẽ không được phép cập nhật giao diện tính toán quy trình tại đây.

Nếu bạn muốn làm điều này, bạn sẽ cần sử dụng một chức năng khác để kết xuất. Như trong ví dụ, hàm PublishingProgress (Tiến độ…) sẽ là hàm dùng để hiển thị% dữ liệu đã tải về thiết bị.

Bước 3: onProgressUpdate ()

onProgressUpdate () sẽ tuần tự hóa PublishingProgress (Tiến trình…) trên Chuỗi giao diện người dùng. Thời gian của bước này là không xác định.

Phương pháp này được sử dụng để hiển thị bất kỳ hình dạng nào trong giao diện người dùng trong khi tính toán vẫn đang diễn ra ở chế độ nền, ví dụ: bạn có thể tạo hiệu ứng cho thanh% tải xuống hoặc hiển thị các tệp nhật ký tải xuống (như tải xuống trong IDM) bằng văn bản.

asynctask-android-la-gi

Bước 4: onPostExecute ()

onPostExecute () sẽ được gọi khi quá trình tính toán của doInBackground () hoàn tất và kết thúc. Kết quả tính toán sẽ được hiển thị dưới dạng tham số và trả về giao diện người dùng.

Ngoài ra, bạn có thể sử dụng hủy bỏ (boolean) để tạm dừng bất kỳ lúc nào trong khi AsyncTask đang thực hiện công việc mà không cần phải đợi AsyncTask hoàn thành toàn bộ công việc.

Đến đây, thuthuatkiemtien.com đã giải thích xong AsyncTask Android là gì và giải thích 4 bước triển khai AsyncTask trong Android bằng ví dụ trực quan và dễ hiểu nhất có thể. Nếu bạn vẫn không hiểu, điều này là bình thường khi làm việc với Tóm tắt. Ngoài ra, bạn có thể tham khảo tài liệu chính thức của Google về Android AsyncTask tại đây.

Cuối cùng, thuthuatkiemtien.com xin chúc các bạn sẽ gặt hái được nhiều thành công trong tương lai với sự nghiệp lập trình Android của mình!

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

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

Tại sao một số mã AsyncTask không hoạt động trên Android 11 trở lên?

Theo thông báo và tài liệu xác thực mới nhất từ ​​chính Android, tính đến thời điểm hiện tại, có 2 trường bị chặn hoặc không được chấp nhận sử dụng trong Android 11 (Android cấp 30) bao gồm:

  • SERIAL_EXECUTOR, được thêm từ Android cấp 11
  • THREAD_POOL_EXECUTOR, được thêm từ Android cấp 11

Cấp API Android là gì?

Android cấp x, còn được gọi là Cấp API Android, là một giá trị số nguyên xác định phiên bản khung API được cung cấp bởi phiên bản của nền tảng Android.

Nếu bạn muốn biết thêm về cấp Android hoặc Cấp API Android, hãy xem tài liệu chính thức của Google về sẽ trả lời nhiều câu hỏi của bạn.

Tại sao có nhiều Trường, Phương thức công khai không được hỗ trợ bởi các phiên bản Android mới?

Có thể nói các phiên bản Android mới không hỗ trợ vì nó không được hỗ trợ. Lý do chính khiến Fields, Public method không được các phiên bản Android mới hỗ trợ là chúng bị Android cắt bớt để cải thiện trải nghiệm người dùng.

Ví dụ: SERIAL_EXECUTOR và THREAD_POOL_EXECUTOR sẽ tạo ra một nhóm luồng ưu tiên duy nhất khiến các tác vụ khác bị ảnh hưởng => các tác vụ không được tối ưu hóa, khiến người dùng phải chờ đợi, làm giảm trải nghiệm của người dùng.

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

  • Trụ sở chính: L17-11, Lầu 17, Tòa nhà Vincom Center, Số 72 Lê Thánh Tôn, P. Bến Nghé, Q.1, TP.
    VPĐD: 42 Trần Phú, P.4, Q.5, TP.HCM
  • Điện thoại: 0364 333 333
    Tổng đài miễn cước: 1800 6734
  • Email: sales@tino.org
  • Trang web: www.tino.org

Xem thêm nhiều bài viết về : Kiến Thức Cơ Bản

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

Nhận xét

Bài đăng phổ biến từ blog này

3 Cách để kiếm tiền từ blog WordPress

Google AdSense bỏ giới hạn số lượng quảng cáo trên mỗi trang

Toàn tập danh sách liên kết đơn trong C++