Bài trước đã hướng dẫn bạn cách tạo một lớp
JobIntentService
. Bài học này sẽ hướng dẫn bạn cách kích hoạt JobIntentService
để chạy một thao tác bằng cách đưa công việc vào hàng đợi bằng Intent
.
Intent
này có thể chứa dữ liệu để JobIntentService
xử lý (không bắt buộc).
Tạo và gửi yêu cầu công việc đến JobIntentService
Để tạo một yêu cầu công việc và gửi yêu cầu đó đến JobIntentService
, hãy tạo một Intent
và thêm yêu cầu đó vào hàng đợi để thực thi bằng cách gọi enqueueWork()
.
Nếu muốn, bạn có thể thêm dữ liệu vào ý định (ở dạng bổ sung ý định) để JobIntentService xử lý. Để biết thêm thông tin về cách tạo ý định, hãy đọc phần Xây dựng một ý định trong bài viết Ý định và bộ lọc ý định
Các đoạn mã sau đây minh hoạ quá trình này:
-
Tạo một
Intent
mới choJobIntentService
có tên làRSSPullService
.
Kotlin
/* * Creates a new Intent to start the RSSPullService * JobIntentService. Passes a URI in the * Intent's "data" field. */ serviceIntent = Intent().apply { putExtra("download_url", dataUrl) }
Java
/* * Creates a new Intent to start the RSSPullService * JobIntentService. Passes a URI in the * Intent's "data" field. */ serviceIntent = new Intent(); serviceIntent.putExtra("download_url", dataUrl));
-
Gọi
enqueueWork()
Kotlin
private const val RSS_JOB_ID = 1000 RSSPullService.enqueueWork(context, RSSPullService::class.java, RSS_JOB_ID, serviceIntent)
Java
// Starts the JobIntentService private static final int RSS_JOB_ID = 1000; RSSPullService.enqueueWork(getContext(), RSSPullService.class, RSS_JOB_ID, serviceIntent);
Xin lưu ý rằng bạn có thể gửi yêu cầu công việc từ bất kỳ vị trí nào trong một Hoạt động hoặc Mảnh. Ví dụ: nếu cần nhận dữ liệu đầu vào của người dùng trước, bạn có thể gửi yêu cầu từ lệnh gọi lại phản hồi một lượt nhấp vào nút hoặc cử chỉ tương tự.
Sau khi bạn gọi enqueueWork()
, JobIntentService
sẽ thực hiện công việc được xác định trong phương thức onHandleWork()
, sau đó tự dừng.
Bước tiếp theo là báo cáo kết quả của yêu cầu công việc trở lại Hoạt động hoặc Mảnh ban đầu. Bài học tiếp theo sẽ hướng dẫn bạn cách thực hiện việc này bằng BroadcastReceiver
.