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:
-
Erstelle ein neues
Intent
mit dem NamenRSSPullService
für dieJobIntentService
.
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()
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.