Arka plan hizmetine çalışma istekleri gönderme

Önceki derste JobIntentService sınıfının nasıl oluşturulacağı gösteriliyordu. Bu derste, Intent ile iş sıraya ekleyerek bir işlemi çalıştırmak için JobIntentService'yi nasıl tetikleyeceğiniz gösterilmektedir. Bu Intent, isteğe bağlı olarak JobIntentService'in işleyeceği veriler içerebilir.

JobIntentService'e çalışma isteği oluşturma ve gönderme

Bir iş isteği oluşturup JobIntentService'e göndermek için Intent oluşturun ve enqueueWork() çağrısını yaparak yürütülmesi için sıraya ekleyin. İsteğe bağlı olarak, JobIntentService'in işlemesi için intent'e (intent ekstraları biçiminde) veri ekleyebilirsiniz. Intent oluşturma hakkında daha fazla bilgi için Intent'ler ve Intent Filtreleri başlıklı makalenin Intent oluşturma bölümünü inceleyin.

Aşağıdaki kod snippet'leri bu işlemi göstermektedir:

  1. JobIntentService için RSSPullService adlı yeni bir Intent oluşturun.

    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. enqueueWork()
    numaralı telefonu arayın

    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);
    

Çalışma isteğini bir etkinlik veya parçanın herhangi bir yerinden gönderebileceğinizi unutmayın. Örneğin, önce kullanıcı girişi almanız gerekiyorsa isteği, bir düğme tıklamasına veya benzer bir harekete yanıt veren bir geri çağırma işlevinden gönderebilirsiniz.

enqueueWork() çağrısından sonra, JobIntentService onHandleWork() yönteminde tanımlanan işlemi yapar ve ardından kendini durdurur.

Bir sonraki adım, çalışma isteğinin sonuçlarını kaynak Etkinlik veya Kırıntı'ya bildirmektir. Bir sonraki derste, bunu BroadcastReceiver ile nasıl yapacağınız gösterilmektedir.