Arbeitsanfragen an Hintergrunddienst senden

In der vorherigen Lektion wurde Ihnen gezeigt, Klasse JobIntentService. Dieses erfahren Sie, wie Sie die JobIntentService zum Ausführen eines Vorgangs Arbeiten mit einem Intent in die Warteschlange stellen. Dieser Intent kann optional Daten für die JobIntentService.

Arbeitsanfrage erstellen und an JobIntentService senden

Um eine Arbeitsanfrage zu erstellen und an eine JobIntentService, eine Intent erstellen und sie in die Warteschlange ausgeführt werden, indem enqueueWork() Optional können Sie dem Intent Daten (in Form von Intent-Extras) für den JobIntentService zu verarbeiten. Weitere Informationen zum Erstellen von Intents finden Sie im Artikel zum Erstellen eines Intent-Abschnitt in Intents und Intent-Filter

Die folgenden Code-Snippets veranschaulichen diesen Vorgang:

  1. Erstellen Sie ein neues Intent für die <ph type="x-smartling-placeholder"></ph> JobIntentService mit dem Namen 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. anrufen 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);
    

Beachten Sie, dass Sie die Arbeitsanfrage von überall in einer Aktivität oder einem Fragment senden können. Wenn Sie beispielsweise zuerst Nutzereingaben erhalten müssen, können Sie die Anfrage über einen Callback senden. die auf einen Schaltflächenklick oder eine ähnliche Bewegung reagiert.

Nach dem Anruf bei enqueueWork(), die JobIntentService führt die in seinem onHandleWork()-Methode, die dann automatisch beendet wird.

Der nächste Schritt besteht darin, die Ergebnisse der Arbeitsanfrage an die ursprüngliche Aktivität zurückzumelden oder Fragment. In der nächsten Lektion erfahren Sie, wie Sie dies mit einem BroadcastReceiver