In der vorherigen Lektion haben Sie gelernt, wie Sie einen JobIntentService
-Kurs erstellen. In dieser Lektion erfahren Sie, wie Sie JobIntentService
auslösen, um einen Vorgang auszuführen. Dazu stellen Sie Arbeit mit einem Intent
in die Warteschlange.
Diese Intent
kann optional Daten für die Verarbeitung durch die JobIntentService
enthalten.
Einen Arbeitsauftrag erstellen und an einen JobIntentService senden
Wenn Sie eine Arbeitsanfrage erstellen und an eine JobIntentService
senden möchten, erstellen Sie eine Intent
und stellen Sie sie zur Ausführung in die Warteschlange ein, indem Sie
enqueueWork()
aufrufen.
Optional können Sie dem Intent Daten in Form von Intent-Extras hinzufügen, die vom JobIntentService verarbeitet werden sollen. Weitere Informationen zum Erstellen von Intents finden Sie im Abschnitt zum Erstellen eines Intents unter Intents und Intent-Filter.
Die folgenden Code-Snippets veranschaulichen diesen Prozess:
-
Erstellen Sie einen neuen
Intent
für denJobIntentService
mit dem NamenRSSPullService
.
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));
-
enqueueWork()
anrufenKotlin
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);
Sie können die Arbeitsanfrage von überall in einer Aktivität oder einem Fragment senden. Wenn du beispielsweise zuerst eine Nutzereingabe abfragen musst, kannst du die Anfrage über einen Callback senden, der auf das Klicken auf eine Schaltfläche oder eine ähnliche Geste reagiert.
Nachdem Sie
enqueueWork()
aufgerufen haben, führt
JobIntentService
die in seiner Methode
onHandleWork()
definierte Arbeit aus und stoppt dann von selbst.
Der nächste Schritt besteht darin, die Ergebnisse der Arbeitsanfrage an die ursprüngliche Aktivität oder das ursprüngliche Fragment zurückzumelden. In der nächsten Lektion erfahren Sie, wie das mit einem BroadcastReceiver
funktioniert.