0Pricing
Android Academy · Lektion

Einen Worker erstellen

Definieren Sie Hintergrundarbeit in einem Worker.

Einen Worker erstellen ist eine kostenlose Android Academy-Lektion auf CoddyKit. Dies ist Lektion 2 von 4. Du kannst die komplette Lektion unten kostenlos lesen – dann übst du sie direkt im Browser mit einem integrierten Code-Editor und einem KI-Tutor rund um die Uhr. Sie ist Teil des Android Academy-Lernpfads, und dein Fortschritt wird über Web und CoddyKit-App synchronisiert. Der Android Academy-Kurs umfasst insgesamt 4 Lektionen.

Einen Worker erstellen

Die Einheit für Hintergrundarbeit in WorkManager ist ein Worker. Sie definieren die Aufgabe, indem Sie eine Worker-Basisklasse ableiten und deren work-Methode überschreiben.

CoroutineWorker

Verwenden Sie für Kotlin CoroutineWorker. Die Methode doWork() ist eine suspend-Funktion. Dadurch können Sie andere Suspend-Funktionen aufrufen und auf natürliche Weise einen Hintergrund-Dispatcher verwenden.

class UploadWorker(
    context: Context,
    params: WorkerParameters
) : CoroutineWorker(context, params) {
    override suspend fun doWork(): Result {
        // background work here
        return Result.success()
    }
}

Der Konstruktor

Jeder Worker erhält Context und WorkerParameters in seinem Konstruktor und übergibt sie an die Oberklasse. WorkManager instanziiert Ihren Worker für Sie; Sie rufen den Konstruktor niemals direkt auf.

doWork gibt ein Result zurück

doWork() muss ein Result zurückgeben, das das Ergebnis beschreibt. Es gibt drei Möglichkeiten.

  • Result.success()
  • Result.retry()
  • Result.failure()

Result.success

Geben Sie Result.success() zurück, wenn die Arbeit abgeschlossen wurde. Die Arbeit wird aus der Warteschlange entfernt. Sie können Ausgabedaten anhängen, die an verkettete Arbeit weitergegeben werden.

override suspend fun doWork(): Result {
    uploadLogs()
    return Result.success()
}

Result.retry

Geben Sie bei einem vorübergehenden Fehler Result.retry() zurück, etwa bei einem zeitweiligen Netzwerkfehler. WorkManager führt den Worker später gemäß seiner Backoff-Richtlinie erneut aus.

override suspend fun doWork(): Result {
    return try {
        syncData()
        Result.success()
    } catch (e: IOException) {
        Result.retry()
    }
}

Result.failure

Geben Sie bei einem dauerhaften Fehler Result.failure() zurück, wenn ein erneuter Versuch das Problem nicht beheben würde, etwa bei ungültigen Eingaben. Die Arbeit wird beendet und abhängige verkettete Arbeit wird nicht ausgeführt.

Eingabedaten lesen

Sie übergeben beim Einreihen kleine Eingaben über Data und lesen sie innerhalb des Workers mit inputData. Halten Sie die Daten klein; Data ist nicht für große Nutzdaten vorgesehen.

override suspend fun doWork(): Result {
    val userId = inputData.getString("user_id") ?: return Result.failure()
    sync(userId)
    return Result.success()
}

Ausgabedaten zurückgeben

Worker können in ihrem Ergebnis Data zurückgeben, das verkettete Worker als Eingabe erhalten. So übergeben Sie Ergebnisse zwischen den einzelnen Schritten.

val output = workDataOf("count" to 42)
return Result.success(output)

Den richtigen Dispatcher verwenden

CoroutineWorker führt doWork() standardmäßig auf Dispatchers.Default aus. Wechseln Sie bei blockierenden I/O-Operationen mit withContext(Dispatchers.IO), damit der Standard-Pool nicht überlastet wird.

override suspend fun doWork(): Result = withContext(Dispatchers.IO) {
    readAndUploadFile()
    Result.success()
}

Worker eigenständig halten

Ein Worker kann lange nach seiner Planung in einem neuen Prozess ausgeführt werden. Verlassen Sie sich nicht auf den In-Memory-Zustand der App, sondern übergeben Sie alles Benötigte über Eingabedaten oder lesen Sie es aus einem persistenten Speicher.

Kurzer Test

Testen Sie Ihr Verständnis zum Erstellen eines Workers.

Zusammenfassung

Sie haben einen Worker erstellt:

  • Leiten Sie CoroutineWorker ab und überschreiben Sie das suspend-fähige doWork()
  • Geben Sie Result.success(), Result.retry() oder Result.failure() zurück
  • Lesen Sie inputData und geben Sie Ausgabe-Data zurück
  • Verwenden Sie Dispatchers.IO für blockierende Arbeit und halten Sie Worker eigenständig

Als Nächstes: Einschränkungen und Planung.

Häufig gestellte Fragen

Ist die Lektion „Einen Worker erstellen“ kostenlos?

Ja — der vollständige Text von „Einen Worker erstellen“ ist hier im Web kostenlos zu lesen. Um sie interaktiv zu üben (integrierter Code-Editor und 24/7 KI-Tutor) und den Rest des Android Academy-Kurses freizuschalten, upgrade auf CoddyKit PRO. Der Android Academy-Kurs umfasst insgesamt 4 Lektionen.

Was lerne ich in „Einen Worker erstellen“?

Definieren Sie Hintergrundarbeit in einem Worker. Du übst Android Academy mit praktischem Code, den du direkt im Browser ausführst, und ein 24/7 KI-Tutor beantwortet deine Fragen während du die Lektion bearbeitest.

Brauche ich Erfahrung, um Android Academy zu starten?

Keine Vorkenntnisse erforderlich. Android Academy auf CoddyKit ist für Anfänger bis fortgeschrittene Lernende strukturiert, sodass du hier starten oder von Anfang an beginnen und in deinem eigenen Tempo voranschreiten kannst. Dies ist Lektion 2 von 4.

Wie lange dauert die Lektion „Einen Worker erstellen“?

Die meisten CoddyKit-Lektionen dauern etwa 5–10 Minuten. Jede ist kompakt und interaktiv, sodass du stetig Fortschritte machst und genau dort weitermachst, wo du aufgehört hast – im Web und in der App.

Kann ich in dieser Android Academy-Lektion Code schreiben und ausführen?

Ja. Jede Android Academy-Lektion enthält einen integrierten Code-Editor, sodass du echten Code direkt in deinem Browser schreibst und ausführst und sofort KI-Feedback erhältst — ohne lokale Einrichtung erforderlich.

Alle Lektionen in diesem Kurs

  1. Wann WorkManager verwendet wird
  2. Einen Worker erstellen
  3. Bedingungen und Zeitplanung
  4. Periodische und verkettete Arbeit
← Zurück zu Android Academy