Wysyłanie próśb o pracę do usługi w tle

Z poprzedniej lekcji dowiesz się, jak utworzyć zajęcia JobIntentService. Z tej lekcji dowiesz się, jak aktywować zadanie JobIntentService w celu uruchomienia operacji przez umieszczenie zadań w kolejce za pomocą Intent. Intent może opcjonalnie zawierać dane, które JobIntentService ma przetworzyć.

Tworzenie i wysyłanie żądania wykonania zadania do usługi JobIntentService

Aby utworzyć żądanie pracy i przesłać je do JobIntentService, utwórz element Intent i umieścić go w kole oczekujących zadań, wywołując element enqueueWork(). Opcjonalnie możesz dodać dane do intencji (w formie dodatkowych informacji) dla usługi JobIntentService. Więcej informacji o tworzeniu intencji znajdziesz w sekcji dotyczącej tworzenia intencji w artykule Intencje i filtry intencji.

Poniżej znajdziesz fragmenty kodu, które pokazują ten proces:

  1. Utwórz nowy Intent dla JobIntentService o nazwie 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. Zadzwoń: 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);
    

Pamiętaj, że możesz wysłać prośbę o pomoc z dowolnego miejsca w aktywności lub fragmencie. Jeśli na przykład musisz najpierw uzyskać dane wejściowe od użytkownika, możesz wysłać żądanie z połączenia zwrotnego, które reaguje na kliknięcie przycisku lub podobny gest.

Po wywołaniu metody enqueueWork() JobIntentService wykonuje pracę zdefiniowaną w metodzie onHandleWork(), a następnie zatrzymuje się.

Następnym krokiem jest przekazanie wyników żądania pracy do pierwotnego działania lub fragmentu. Z następnej lekcji dowiesz się, jak to zrobić, korzystając z narzędzia BroadcastReceiver.