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

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:

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