Tạo luồng trong WorkManager
Sử dụng bộ sưu tập để sắp xếp ngăn nắp các trang
Lưu và phân loại nội dung dựa trên lựa chọn ưu tiên của bạn.
Bài viết Bắt đầu sử dụng WorkManager đã đề cập rằng WorkManager thực hiện các công việc nền thay mặt bạn một cách không đồng bộ. Quy trình triển khai cơ bản có thể giải quyết nhu cầu của hầu hết ứng dụng. Để biết thêm
các trường hợp sử dụng nâng cao như xử lý đúng cách công việc bị dừng, hãy tìm hiểu về việc tạo luồng và xử lý đồng thời trong WorkManager.
WorkManager cung cấp bốn loại công việc cơ bản:
Worker
là quy trình triển khai đơn giản nhất
và là quy trình bạn đã đọc trong các mục trước. WorkManager tự động chạy
quy trình này trên một chuỗi nền. Bạn có thể ghi đè chuỗi này. Hãy đọc thêm về việc tạo luồng trong các thực thể Worker
tại bài viết Tạo luồng trong Worker.
CoroutineWorker
là
quy trình triển khai được đề xuất cho người dùng Kotlin. Các thực thể CoroutineWorker
hiển thị chức năng tạm ngưng công việc trong nền. Theo mặc định, các thực thể này chạy lệnh
Dispatcher
mặc định mà bạn có thể ttuỳ chỉnh. Hãy đọc thêm về việc tạo luồng trong các thực thể CoroutineWorker
tại bài viết Tạo luồng trong CoroutineWorker.
RxWorker
là quy trình triển khai
được đề xuất cho người dùng RxJava. RxWorkers nên được sử dụng nếu phần lớn mã không đồng bộ hiện tại được mô hình hoá trong RxJava. Tương tự như các khái niệm khác của RxJava, bạn có thể ttuỳ ý chọn chiến lược tạo luồng. Hãy đọc thêm về việc tạo luồng trong các thực thể RxWorker
tại bài viết Tạo luồng trong RxWorker.
ListenableWorker
là lớp cơ sở
cho Worker
, CoroutineWorker
và RxWorker
. Lớp này dành cho các nhà phát triển Java không sử dụng RxJava và phải tương tác với các API không đồng bộ dựa trên lệnh gọi lại
chẳng hạn như FusedLocationProviderClient
. Hãy đọc thêm
về việc tạo luồng trong các thực thể ListenableWorker
tại bài viết Tạo luồng trong ListenableWorker.
Nội dung và mã mẫu trên trang này phải tuân thủ các giấy phép như mô tả trong phần Giấy phép nội dung. Java và OpenJDK là nhãn hiệu hoặc nhãn hiệu đã đăng ký của Oracle và/hoặc đơn vị liên kết của Oracle.
Cập nhật lần gần đây nhất: 2025-07-26 UTC.
[null,null,["Cập nhật lần gần đây nhất: 2025-07-26 UTC."],[],[],null,["# Threading in WorkManager\n\nIn [Getting started with WorkManager](/topic/libraries/architecture/workmanager/basics),\nwe mentioned that WorkManager performs background work asynchronously on your\nbehalf. The basic implementation addresses the demands of most apps. For more\nadvanced use cases, such as correctly handling work being stopped, you should\nlearn about threading and concurrency in WorkManager.\n\nThere are four different types of work primitives provided by WorkManager:\n\n- [`Worker`](/reference/androidx/work/Worker) is the simplest implementation, and the one you have seen in previous sections. WorkManager automatically runs it on a background thread (that you can override). Read more about threading in `Worker` instances in [Threading in Worker](/topic/libraries/architecture/workmanager/advanced/worker).\n- [`CoroutineWorker`](/reference/kotlin/androidx/work/CoroutineWorker) is the recommended implementation for Kotlin users. `CoroutineWorker` instances expose a suspending function for background work. By default, they run a default `Dispatcher`, which you can customize. Read more about threading in `CoroutineWorker` instances in [Threading in CoroutineWorker](/topic/libraries/architecture/workmanager/advanced/coroutineworker).\n- [`RxWorker`](/reference/androidx/work/RxWorker) is the recommended implementation for RxJava users. RxWorkers should be used if a lot of your existing asynchronous code is modelled in RxJava. As with all RxJava concepts, you are free to choose the threading strategy of your choice. Read more about threading in `RxWorker` instances in [Threading in RxWorker](/topic/libraries/architecture/workmanager/advanced/rxworker).\n- [`ListenableWorker`](/reference/androidx/work/ListenableWorker) is the base class for `Worker`, `CoroutineWorker`, and `RxWorker`. It is intended for Java developers who have to interact with callback-based asynchronous APIs such as `FusedLocationProviderClient` and are not using RxJava. Read more about threading in `ListenableWorker` instances in [Threading in ListenableWorker](/topic/libraries/architecture/workmanager/advanced/listenableworker)."]]