Bài học trước đã hướng dẫn bạn cách tạo
Lớp JobIntentService
. Chiến dịch này
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 theo
thêm công việc vào hàng đợi bằng Intent
.
Intent
này có thể
(không bắt buộc) có chứa dữ liệu cho
JobIntentService
để xử lý.
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 nó đến
JobIntentService
!
tạo một Intent
rồi thêm đối tượng này vào hàng đợi
được 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) cho
JobIntentService để xử lý. Để biết thêm thông tin về cách tạo ý định, hãy đọc tài liệu Xây dựng
phần ý định trong Ý đị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
đã gọiRSSPullService
.
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 cứ đâu trong một Hoạt động hoặc Mảnh. Ví dụ: trước tiên, nếu cần nhận hoạt động đầu vào của người dùng, bạn có thể gửi yêu cầu qua một lệnh gọi lại để phản hồi thao tác nhấp vào nút hoặc cử chỉ tương tự.
Sau khi bạn gọi
enqueueWork()
,
JobIntentService
thực hiện công việc được xác định trong
onHandleWork()
rồi 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 về Hoạt động gốc
hoặc Mảnh. 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
.