1. Trước khi bắt đầu
Giới thiệu
Trong bài học này, bạn đã tìm hiểu về WorkManager, đây là một thư viện Jetpack dành cho công việc (work) có thể trì hoãn ở chế độ nền. Công việc trong nền này sẽ luôn chạy ngay cả khi bạn đóng ứng dụng nguồn.
Trong quá trình tìm hiểu về WorkManager, bạn đã học cách xác định công việc trong lớp Worker, cách tạo WorkRequest cho Worker, cách thêm công việc vào hàng đợi cũng như lên lịch cho công việc.
Trong bộ bài tập thực hành này, bạn sẽ áp dụng các khái niệm đã học để cải thiện ứng dụng Water Me!.
Chúng tôi sẽ cung cấp mã giải pháp ở phần cuối. Để khai thác tối đa trải nghiệm học tập này, bạn hãy cố gắng triển khai và khắc phục sự cố nhiều nhất có thể trước khi xem mã giải pháp chúng tôi cung cấp. Chính trong thời gian thực hành này, bạn sẽ học được nhiều kiến thức nhất.
Điều kiện tiên quyết
- Kiến thức cơ bản về lập trình Android bằng Compose, cùng với tài liệu trong lớp học lập trình WorkManager và hoạt động kiểm thử nâng cao
Bạn cần có
- Máy tính có kết nối Internet và Android Studio
Sản phẩm bạn sẽ tạo ra
Trong bộ bài tập thực hành này, bạn sẽ áp dụng các khái niệm đã học để cải thiện ứng dụng Water Me!.
Ứng dụng hiện cho thấy danh sách cây ở dạng cuộn. Khi bạn nhấn vào một cây, ứng dụng sẽ cho phép bạn thiết lập lời nhắc tưới cây.
Tuy bạn có thể chọn khung thời gian nhắc, nhưng thông báo nhắc sẽ không xuất hiện.
Việc của bạn là triển khai công việc ở chế độ nền để thông báo nhắc xuất hiện.
Sau khi bạn hoàn tất đoạn mã, ứng dụng có thể cho thấy thông báo nhắc sau khi khoảng thời gian đã chọn kết thúc.
2. Lấy đoạn mã khởi đầu
Để bắt đầu, hãy tải mã khởi đầu xuống:
Ngoài ra, bạn có thể sao chép kho lưu trữ GitHub cho đoạn mã:
$ git clone https://github.com/google-developer-training/basic-android-kotlin-compose-training-waterme.git $ cd basic-android-kotlin-compose-training-waterme $ git checkout starter
Bạn có thể duyệt xem mã của ứng dụng Water Me! trong kho lưu trữ GitHub này.
Chạy mã khởi đầu
Để làm quen với mã khởi đầu, hãy hoàn thành các bước sau:
- Mở dự án bằng mã khởi đầu trong Android Studio.
- Chạy ứng dụng trên thiết bị Android hoặc trình mô phỏng.
Giờ bạn đã sẵn sàng bắt đầu lập trình!
3. Lên lịch gửi thông báo bằng WorkManager
Chức năng của ứng dụng Water Me! đã được triển khai hầu hết, ngoại trừ tính năng lên lịch thông báo nhắc.
Mã để tạo thông báo nằm trong tệp WaterReminderWorker.kt
, trong gói worker. Lớp WaterReminderWorker
mở rộng lớp CoroutineWorker
và mã để tạo thông báo nằm bên trong phương thức doWork()
.
Do thông báo có thể là một chủ đề mới cho bạn, mã này đã hoàn tất.
override suspend fun doWork(): Result {
val plantName = inputData.getString(nameKey)
makePlantReminderNotification(
applicationContext.resources.getString(R.string.time_to_water, plantName),
applicationContext
)
return Result.success()
}
Nhiệm vụ của bạn là tạo OneTimeWorkRequest
để gọi phương thức này với các tham số chính xác từ WorkManagerWaterRepository
.
Để được trợ giúp thêm, hãy tham khảo lớp học lập trình Làm việc ở chế độ nền bằng WorkManager.
Tạo yêu cầu công việc
Để lên lịch thông báo, bạn cần triển khai phương thức scheduleReminder()
trong tệp WorkManagerWaterRepository.kt
.
- Tạo biến có tên
data
bằngData.Builder
. Dữ liệu cần bao gồm một giá trị chuỗi đơn, trong đóWaterReminderWorker.nameKey
là khoá vàplantName
được truyền vàoscheduleReminder()
là giá trị. - Tạo yêu cầu công việc một lần bằng lớp
WaterReminderWorker
. Sử dụngduration
vàunit
được truyền vào hàmscheduleReminder()
, đồng thời đặt dữ liệu đầu vào thành biến dữ liệu mà bạn tạo. - Gọi phương thức
enqueueUniqueWork()
củaworkManager
. Truyền tên cây được nối với thời lượng, sử dụngREPLACE
làmExistingWorkPolicy
và đối tượng yêu cầu công việc.
Lúc này ứng dụng của bạn hoạt động như dự kiến.
4. Thử thách khác (không bắt buộc)
Để thực hành lập trình thêm, hãy thay đổi các tuỳ chọn thời lượng thành như sau:
- 5 giây
- 1 phút
- 2 phút
- 3 phút
Sau khi bạn hoàn tất, hãy kiểm tra từng thời lượng để xác nhận rằng thời lượng đó hoạt động như mong đợi.
5. Lấy đoạn mã giải pháp
Để tải mã này xuống khi lớp học lập trình đã kết thúc, bạn có thể sử dụng các lệnh sau:
$ git clone https://github.com/google-developer-training/basic-android-kotlin-compose-training-waterme.git $ cd basic-android-kotlin-compose-training-waterme $ git checkout main
Ngoài ra, bạn có thể tải kho lưu trữ xuống dưới dạng tệp ZIP, sau đó giải nén rồi mở trong Android Studio.
Nếu bạn muốn tham khảo đoạn mã giải pháp cho lớp học lập trình này, hãy xem trên GitHub.