Mengirimkan permintaan kerja ke layanan latar belakang

Pelajaran sebelumnya menunjukkan cara membuat Class JobIntentService. Ini menunjukkan cara memicu JobIntentService untuk menjalankan operasi dengan mengantrekan pekerjaan dengan Intent. Intent ini dapat secara opsional berisi data untuk JobIntentService untuk diproses.

Membuat dan mengirim permintaan pekerjaan ke JobIntentService

Untuk membuat permintaan pekerjaan dan mengirimkannya ke JobIntentService, membuat Intent dan mengantrekannya ke dieksekusi dengan memanggil enqueueWork(). Secara opsional, Anda bisa menambahkan data ke intent (dalam bentuk tambahan intent) untuk JobImages yang akan diproses. Untuk informasi selengkapnya tentang cara membuat intent, baca bagian intent di Intent dan Filter Intent

Cuplikan kode berikut menunjukkan proses ini:

  1. Buat Intent baru untuk JobIntentService memanggil 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. Panggil 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);
    

Perlu diketahui bahwa Anda dapat mengirim permintaan kerja dari mana saja dalam Aktivitas atau Fragmen. Misalnya, jika Anda perlu mendapatkan input pengguna terlebih dahulu, Anda bisa mengirim permintaan dari callback yang merespons klik tombol atau {i>gesture <i}serupa.

Setelah Anda memanggil enqueueWork(), JobIntentService melakukan pekerjaan yang ditentukan dalam onHandleWork(), lalu menghentikannya sendiri.

Langkah berikutnya adalah melaporkan hasil permintaan pekerjaan kembali ke Aktivitas asal atau Fragment. Pelajaran berikutnya menunjukkan bagaimana melakukan ini dengan BroadcastReceiver.