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 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:

  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 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.