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

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

İş isteği oluşturma ve JobIntentService'e gönderme

İş isteği oluşturup JobIntentService'e göndermek için Intent oluşturup enqueueWork() çağrısı yaparak yürütülmesi için sıraya koyun. İsteğe bağlı olarak, JobIntentService'in işlemesi için amaca veri (amaç ekstraları biçiminde) ekleyebilirsiniz. Niyet oluşturma hakkında daha fazla bilgi için Amaçlar ve Amaç Filtreleri bölümündeki Amaç oluşturma bölümünü okuyun

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

  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. Telefon et: 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);
    

İş isteğini bir Etkinlik veya Parça içinde herhangi bir yerden gönderebileceğinize dikkat edin. Ö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ğırmadan gönderebilirsiniz.

enqueueWork() çağırdığınızda JobIntentService, onHandleWork() yönteminde tanımlanan işi yapar ve ardından kendini durdurur.

Bir sonraki adım, çalışma isteğinin sonuçlarını kaynak Etkinlik veya Parçaya geri bildirmektir. Sonraki derste, BroadcastReceiver ile bunu nasıl yapacağınız gösterilmektedir.