Sử dụng Scheduling tasks with Work Manager (P.1)

181

I. Giới thiệu Work manager:

Trong sự kiện Google I/O 2018 google đã phát hành Android Jetpack. Đây là một bộ thư viện, công cụ tuyệt vời để giúp các lập trình viên tạo các ứng dụng android dễ dàng và nhanh chóng hơn.

Trong bộ Android Jetpack này google đã phát hành 1 thư viện đặc biệt để xử lý các tác vụ như: lên lịch, xử lý background đó là “Work Manager”.

II. Background work scheduler?

Có thể bạn đã nghe qua hoặc sử dụng các thư viện để xử lý các công việc nêu phía trên như: Job Schedule, Alarm manager, Firebase Job Dispatcher, Eventnote’s chẳng hạn. Có khá nhiều thư viện hỗ trợ, thế Work manager có gì hot để chúng ta sử dụng.

Đầu tiên: Một Background work scheduler phải có những gì?

Để hiểu rõ hơn chúng ta sẽ thảo luận từng ý một:

1. Easy to schedule

– Cho phép lên lịch chạy một task trong một điều kiện cụ thể (Ví dụ: chỉ chạy khi thiết bị đang sạc)
– Scheduler phải đảm bảo rằng task đã được lên lịch sẽ chạy bất cứ khi nào điều kiện bắt buộc thoả mãn.
– Mỗi task có thể kết nối với 1 task khác để chạy nhiều task song song với nhau hoặc chạy tuần tự.

2. Easy to cancel

– Bạn có quyền kiểm xoát các Task đã lên lịch. Scheduler phải cung cấp API để huỷ task đã lên lịch dễ dàng.

3. Easy to query

– Có thể hiển thị trạng thái của task trên UI.
– Ví dụ bạn lên lịch để chạy 1 task upload image khi có internet hoặc khi đang sạc . Bạn muốn hiển thị % lên UI. Scheduler phải cung cấp cho bạn API để get trạng thái của task một cách dễ dàng.

4. Support for all android versions

– The scheduler APIs phải hoạt động tốt trên hầu hết các phiên bản api hiện tại. (Điều này có vẻ bất khả thi ^^)

III. Điểm khác biệt của WORK MANAGER là gì?

Theo tài liệu chính thức:

1. Easy to schedule

  • WorkManager API giúp dễ dàng tạo các task không đồng bộ và cho phép bạn chỉ định thời gian chúng khởi chạy.
  • Bạn có thể tạo một task và giao nó cho Work Manager để chạy nó ngay lập tức hoặc bất cứ khi nào thiết bị thoả điều kiện (Như đang sạc hoặc có internet…)
  • Work Manager đảm bảo rằng task của bạn sẽ chạy khi thoả điều kiện ngay cả khi ứng dụng force-quit hoặc thiết bị khởi động lại.

2. Easy to cancel

  • Work Manager tạo ra các UUID cho mỗi task mà bạn lên lịch. Bạn có thể sử dụng id này để huỷ task bất cứ lúc nào.

3. Easy to query

  • Bạn có thể kiểm tra trạng thái của Task ngay cả khi nó đang chạy, chờ xử lý hoặc kết thúc bằng cách sử dụng id của nó.
  • Work manager APIs cho phép các tác vụ trả về dữ liệu ở format: key-value bạn có thể dùng nó để update UI.
  • WordManager sử dụng LiveData để trả về dữ liệu và trạng thái của task. Vì vậy bạn có thể quan sát đc LiveData bất cứ khi nào task thay đổi trạng thái.

4. Support for all android versions

  • Hỗ trợ API  14+
  • Có khả năng chọn cách thích hợp để run task dựa vào các yếu tố như API level, status app.
  • Nếu app đang chạy , WorkManager APIs sẽ tạo ra các thread mới để chạy task.
  • Nếu ứng dụng không chạy nó sẽ sử dụng Job Scheduler, hoặc Firebase Job Dispatcher, hoặc Alarm manager để chạy task của bạn. (Quá tuyệt vời.)

IV. Khi nào thì nên sử dụng Work manager?

Bạn có thể thấy rằng Work manager rất dễ sử dụng. Nếu chúng sử dụng chúng để chạy tất cả các tác vụ nền của tôi thì sao?

Vâng, hãy nhớ rằng Work manager API  rất hữu ích cho các tác vụ yêu cầu bắt buộc phải được thực hiện và chúng có thể bị trì hoãn (deferrable) tuỳ thuộc và các điều kiện ràng buộc bạn quy định trước đó hoặc các yêu cầu khác của chính nó.
Tất cả các trường hợp sử dụng khác, bạn có thể dễ dàng sử dụng intent services or foreground services để xử lý.

Note: Ở phần 1 mình sẽ tạm dừng tại đây.
Trong phần tiếp theo mình sẽ giới thiệu với các bạn các thành phần của WorkManager và đi vào 1 sample cụ thể.

Xem tiếp phần 2!

Bản English : Medium