Um den WorkManager zu nutzen, musst du zuerst die Bibliothek in dein Android-Gerät importieren Projekt arbeiten.
Fügen Sie der Datei build.gradle
Ihrer Anwendung die folgenden Abhängigkeiten hinzu:
Cool
dependencies { def work_version = "2.9.1" // (Java only) implementation "androidx.work:work-runtime:$work_version" // Kotlin + coroutines implementation "androidx.work:work-runtime-ktx:$work_version" // optional - RxJava2 support implementation "androidx.work:work-rxjava2:$work_version" // optional - GCMNetworkManager support implementation "androidx.work:work-gcm:$work_version" // optional - Test helpers androidTestImplementation "androidx.work:work-testing:$work_version" // optional - Multiprocess support implementation "androidx.work:work-multiprocess:$work_version" }
Kotlin
dependencies { val work_version = "2.9.1" // (Java only) implementation("androidx.work:work-runtime:$work_version") // Kotlin + coroutines implementation("androidx.work:work-runtime-ktx:$work_version") // optional - RxJava2 support implementation("androidx.work:work-rxjava2:$work_version") // optional - GCMNetworkManager support implementation("androidx.work:work-gcm:$work_version") // optional - Test helpers androidTestImplementation("androidx.work:work-testing:$work_version") // optional - Multiprocess support implementation("androidx.work:work-multiprocess:$work_version") }
Nachdem Sie die Abhängigkeiten hinzugefügt und Ihr Gradle-Projekt synchronisiert haben, definieren Sie die auszuführende Arbeit.
Aufgaben definieren
Die Arbeit wird mithilfe der Worker
definiert
. Die Methode doWork()
wird asynchron im Hintergrund ausgeführt
Thread bereitgestellt von WorkManager.
Damit WorkManager ausgeführt werden kann, erweitern Sie die Worker
-Klasse und
überschreiben Sie die doWork()
-Methode. Um beispielsweise einen Worker
zu erstellen, der
Bilder verwenden, können Sie Folgendes tun:
Kotlin
class UploadWorker(appContext: Context, workerParams: WorkerParameters): Worker(appContext, workerParams) { override fun doWork(): Result { // Do the work here--in this case, upload the images. uploadImages() // Indicate whether the work finished successfully with the Result return Result.success() } }
Java
public class UploadWorker extends Worker { public UploadWorker( @NonNull Context context, @NonNull WorkerParameters params) { super(context, params); } @Override public Result doWork() { // Do the work here--in this case, upload the images. uploadImages(); // Indicate whether the work finished successfully with the Result return Result.success(); } }
Das Result
von doWork()
zurückgegeben, wird der WorkManager-Dienst darüber informiert,
erfolgreich war und im Falle eines Scheiterns, ob die Arbeit
den Vorgang wiederholen.
Result.success()
: Die Arbeit wurde abgeschlossen.Result.failure()
: Die Arbeit ist fehlgeschlagen.Result.retry()
: Die Arbeit ist fehlgeschlagen. Versuchen Sie es später noch einmal. laut seinen Richtlinie für Wiederholungsversuche.
WorkRequest erstellen
Sobald Ihre Arbeit definiert ist, muss sie mit dem WorkManager-Dienst in ausgeführt werden soll. WorkManager bietet eine Menge Flexibilität bei der Planung arbeiten. Sie können die Ausführung planen, regelmäßig in einem Intervall oder Sie planen, nur eine Ausführung Zeit.
Unabhängig davon, wie Sie die Arbeit planen, verwenden Sie immer ein
WorkRequest
Während ein
Worker
definiert die Arbeitseinheit, eine
WorkRequest
(und seine
abgeleiteten Klassen), definieren, wie und wann sie ausgeführt werden soll. Im einfachsten Fall können Sie
eine
OneTimeWorkRequest
,
wie im folgenden Beispiel gezeigt.
Kotlin
val uploadWorkRequest: WorkRequest = OneTimeWorkRequestBuilder<UploadWorker>() .build()
Java
WorkRequest uploadWorkRequest = new OneTimeWorkRequest.Builder(UploadWorker.class) .build();
WorkRequest an das System senden
Senden Sie zum Schluss Ihre WorkRequest
an WorkManager
mithilfe des
enqueue()
.
Kotlin
WorkManager .getInstance(myContext) .enqueue(uploadWorkRequest)
Java
WorkManager .getInstance(myContext) .enqueue(uploadWorkRequest);
Die genaue Zeit, zu der der Worker ausgeführt wird, hängt vom
Einschränkungen, die in WorkRequest
und bei Systemoptimierungen verwendet werden.
WorkManager ist darauf ausgelegt, unter diesen Einschränkungen das beste Verhalten zu erzielen.
Nächste Schritte
Dieser Startleitfaden kratzt nur an der Oberfläche. WorkRequest
kann
auch zusätzliche Informationen enthalten, wie z. B. die Einschränkungen, unter denen die
Work ausgeführt werden soll, Eingabe in die Arbeit, eine Verzögerung und Backoff-Richtlinien für Neuversuche
arbeiten. Im nächsten Abschnitt: Arbeit definieren
erhalten Sie eine Anleitung,
mehr über diese Optionen erfahren und
wie Sie einmalige und wiederkehrende Arbeiten planen.
Weitere Informationen
Zusätzlich zur Dokumentation gibt es verschiedene Blogs, Codelabs und Code, Beispiele für den Einstieg.
Produktproben
- WorkManagerSample eine einfache Bildverarbeitungs-App.
- Sonnenblume Eine Demo-App, die Best Practices mit verschiedenen Architekturen zeigt einschließlich WorkManager.
Codelabs
- Mit WorkManager (Kotlin) und (Java) arbeiten
- Advanced WorkManager (Kotlin)
Blogs
- Jetzt neu: WorkManager
- WorkManager-Grundlagen
- WorkManager und Kotlin
- WorkManager-Periode
- WorkManager anpassen – Grundlagen
- WorkManager mit Dagger anpassen