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

W poprzedniej lekcji pokazaliśmy, jak utworzyć zajęcia JobIntentService. Z tej lekcji dowiesz się, jak uruchomić JobIntentService, aby uruchomić operację, umieszczając ją w kolejce z elementem Intent. Intent może opcjonalnie zawierać dane do przetworzenia przez JobIntentService.

Tworzenie i wysyłanie żądania służbowego do usługi JobIntentService

Aby utworzyć żądanie robocze i wysłać je do JobIntentService, utwórz Intent i umieść je w kolejce do wykonania, wywołując enqueueWork(). Opcjonalnie możesz dodać dane do intencji (w postaci dodatków do intencji), którą ma przetworzyć usługa JobIntentService. Więcej informacji o tworzeniu intencji znajdziesz w sekcji Tworzenie intencji w artykule Intencje i filtry intencji

Poniższe fragmenty kodu ilustrują ten proces:

  1. Utwórz nowy element 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);
    

Zwróć uwagę, że możesz wysłać żądanie pracy z dowolnego miejsca w aktywności lub fragmencie. Jeśli na przykład chcesz najpierw uzyskać dane wejściowe użytkownika, możesz wysłać żądanie z wywołania zwrotnego, które reaguje na kliknięcie przycisku lub podobny gest.

Gdy wywołasz enqueueWork(), JobIntentService wykona pracę zdefiniowaną w swojej metodzie onHandleWork(), a następnie zatrzyma się samodzielnie.

Następnym krokiem jest zgłoszenie wyników żądania pracy do źródłowej aktywności lub fragmentu. Z następnej lekcji dowiesz się, jak to zrobić za pomocą BroadcastReceiver.