Arbeitsanfragen an Hintergrunddienst senden

In der vorherigen Lektion haben Sie erfahren, wie Sie einen JobIntentService-Kurs erstellen. In dieser Lektion erfahren Sie, wie Sie JobIntentService zum Ausführen eines Vorgangs auslösen, indem Sie die Arbeit mit einem Intent in die Warteschlange stellen. Dieses Intent kann optional Daten enthalten, die vom JobIntentService verarbeitet werden sollen.

Arbeitsanfrage erstellen und an JobIntentService senden

Wenn Sie eine Arbeitsanfrage erstellen und an einen JobIntentService senden möchten, erstellen Sie ein Intent-Objekt und stellen es durch Aufrufen von enqueueWork() zur Ausführung in die Warteschlange. Optional können Sie Daten in Form von Intent-Extras zum Intent hinzufügen, damit er vom JobIntentService verarbeitet wird. Weitere Informationen zum Erstellen von Intents finden Sie im Abschnitt zum Erstellen von Intents unter Intents und Intent-Filter.

Die folgenden Code-Snippets veranschaulichen diesen Vorgang:

  1. Erstelle ein neues Intent mit dem Namen RSSPullService für die JobIntentService.

    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() aufrufen

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

Beachten Sie, dass Sie die Arbeitsanfrage von überall in einer Aktivität oder einem Fragment senden können. Wenn du beispielsweise zuerst Nutzereingaben einholen musst, kannst du die Anfrage über einen Callback senden, der auf einen Klick auf eine Schaltfläche oder eine ähnliche Geste reagiert.

Sobald Sie enqueueWork() aufrufen, erledigt JobIntentService die in seiner onHandleWork()-Methode definierte Arbeit und stoppt dann selbst.

Im nächsten Schritt werden die Ergebnisse der Arbeitsanfrage an die ursprüngliche Aktivität oder das ursprüngliche Fragment zurückgegeben. In der nächsten Lektion erfahren Sie, wie das mit einem BroadcastReceiver geht.