Gửi yêu cầu công việc đến dịch vụ dưới nền

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:

  1. Tạo một Intent mới cho JobIntentService đã gọi 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));
    
  2. 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.