Bài học 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 thêm công việc vào hàng đợi bằng Intent
.
Intent
này có thể tuỳ ý chứa dữ liệu để 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 yêu cầu đó đến JobIntentService
, hãy tạo Intent
và đưa 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 ý định bổ sung) để 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 ý định trong bài viết Ý định và bộ lọc ý định
Các đoạn mã sau đây minh hoạ quy 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 cứ đâu trong một Hoạt động hoặc Mảnh. Ví dụ: nếu cần lấy thông tin về hoạt động đầu vào của người dùng, trước tiên, bạn có thể gửi yêu cầu từ một lệnh gọi lại phản hồi một lượt nhấp vào nút hoặc thao tác 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()
rồi tự ngừng hoạt động.
Bước tiếp theo là báo cáo kết quả của yêu cầu công việc cho Hoạt động hoặc Mảnh gốc. 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
.