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

Na poprzedniej lekcji pokazaliśmy, jak utworzyć JobIntentService. Ten jak wyzwolić JobIntentService, aby uruchomić operację dołączanie zadań do kolejki za pomocą Intent. Ta Intent może opcjonalnie zawierają dane dla argumentu JobIntentService w celu przetworzenia.

Tworzenie i wysyłanie żądania pracy do JobIntentService

Aby utworzyć zadanie służbowe i wysłać je do JobIntentService utwórz Intent i umieść go w kolejce do zostanie wykonane przez wywołanie enqueueWork() Opcjonalnie do intencji (w postaci dodatkowych intencji) możesz dodać dane JobIntentService do przetworzenia. Więcej informacji o tworzeniu intencji znajdziesz w artykule dotyczącym tworzenia sekcji intencji w filtrach intencji i intencji.

Fragmenty kodu ilustrują ten proces:

  1. Utwórz nowy obiekt 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ń do 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 prośbę o pracę możesz wysłać 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 reagują na kliknięcie przycisku lub podobny gest.

Po połączeniu telefonu enqueueWork(), JobIntentService wykonuje czynność określoną w swojej onHandleWork(), a następnie się zatrzymuje.

Następnym krokiem jest zgłoszenie wyników zadania z powrotem do aktywności źródłowej. lub Fragment. Na następnej lekcji dowiesz się, jak to zrobić, używając BroadcastReceiver