Android Academy · Les

Een Worker maken

Definieer achtergrondwerk in een Worker.

Les 2 van 413 stappen

Een Worker maken is een gratis Android Academy-les op CoddyKit. Dit is les 2 van 4. Je kunt 3 lessen uit dit leerpad gratis volledig lezen — daarna ontgrendelt CoddyKit PRO alle lessen, plus praktische oefeningen met een ingebouwde code-editor en een AI-tutor die 24/7 beschikbaar is. Deze les maakt deel uit van het leertraject Android Academy. Je voortgang wordt gesynchroniseerd op het web en in de CoddyKit-app. De cursus Android Academy bevat in totaal 4 lessen.

Een Worker maken

De eenheid voor werk op de achtergrond in WorkManager is een Worker. Je definieert de taak door een basisklasse voor workers uit te breiden en de work-methode te overschrijven.

CoroutineWorker

Voor Kotlin breid je CoroutineWorker uit. De doWork() is een suspend-functie, zodat je andere suspend-functies kunt aanroepen en vanzelf op een dispatcher voor achtergrondwerk kunt uitvoeren.

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

De constructor

Elke worker ontvangt een Context en WorkerParameters in zijn constructor en geeft deze door aan de superklasse. WorkManager maakt je worker voor je aan; je roept de constructor nooit rechtstreeks aan.

doWork retourneert een Result

doWork() moet een Result retourneren die de uitkomst beschrijft. Er zijn drie mogelijkheden.

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

Result.success

Retourneer Result.success() wanneer het werk is voltooid. Het werk wordt uit de wachtrij verwijderd. Je kunt uitvoergegevens toevoegen om deze door te geven aan gekoppeld werk.

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

Result.retry

Retourneer Result.retry() bij een tijdelijke fout, zoals een tijdelijke netwerkfout. WorkManager voert de worker later opnieuw uit volgens het beleid voor nieuwe pogingen.

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

Result.failure

Retourneer Result.failure() bij een permanente fout die niet wordt opgelost door opnieuw proberen, zoals ongeldige invoer. Het werk stopt en afhankelijk gekoppeld werk wordt niet uitgevoerd.

Invoergegevens lezen

Je geeft kleine invoergegevens door via Data wanneer je werk aan de wachtrij toevoegt, en leest ze binnen de worker met inputData. Houd de gegevens klein; ze zijn niet bedoeld voor grote ladingen.

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

Uitvoergegevens retourneren

Workers kunnen Data retourneren in hun resultaat. Gekoppelde workers ontvangen deze gegevens als invoer. Zo geef je resultaten tussen stappen door.

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

Werk op de juiste dispatcher

CoroutineWorker voert doWork() standaard uit op Dispatchers.Default. Schakel voor blokkerende I/O over met withContext(Dispatchers.IO) om te voorkomen dat de standaardpool uitgeput raakt.

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

Houd workers zelfstandig

Een worker kan lang na het plannen ervan worden uitgevoerd, in een nieuw proces. Vertrouw niet op de status van de app in het geheugen; geef door wat je nodig hebt via invoergegevens of lees het uit permanente opslag.

Korte controle

Test je begrip van het maken van een Worker.

Samenvatting

Je hebt een Worker gemaakt:

  • Breid CoroutineWorker uit en overschrijf de suspend-doWork()
  • Retourneer Result.success(), Result.retry() of Result.failure()
  • Lees inputData en retourneer uitvoer-Data
  • Gebruik Dispatchers.IO voor blokkerend werk en houd workers zelfstandig

Volgende: voorwaarden en planning.

Gratis beginnen

Leer Kotlin met een AI-tutor — gratis

Schrijf echte code en voer die uit in je browser, krijg direct hulp van een AI-tutor die 24/7 beschikbaar is en ga verder waar je gebleven bent op het web of in de app.

Cursussen
36
Lessen
152

Veelgestelde vragen

Is de les “Een Worker maken” gratis?

Ja — je kunt hier op het web alle 3 lessen van het leerpad Android Academy, waaronder “Een Worker maken”, gratis volledig lezen. Daarna ontgrendelt CoddyKit PRO alle lessen, plus interactieve oefeningen met een ingebouwde code-editor en een AI-tutor die 24/7 beschikbaar is. De cursus Android Academy bevat in totaal 4 lessen.

Wat leer ik in “Een Worker maken”?

Definieer achtergrondwerk in een Worker. Je oefent met Android Academy door code rechtstreeks in de browser uit te voeren. Een AI-begeleider die 24/7 beschikbaar is beantwoordt je vragen terwijl je de les doorwerkt.

Heb ik ervaring nodig om met Android Academy te beginnen?

Ervaring vooraf is niet nodig. Android Academy op CoddyKit is opgebouwd voor beginners tot gevorderden, zodat je hier of bij het begin kunt starten en in je eigen tempo kunt leren. Dit is les 2 van 4.

Hoe lang duurt de les “Een Worker maken”?

De meeste lessen van CoddyKit duren ongeveer 5–10 minuten. Elke les is kort en interactief, zodat je gestaag vooruitgaat en op het web en in de app precies verdergaat waar je was gebleven.

Kan ik code schrijven en uitvoeren in deze les over Android Academy?

Ja. Elke les over Android Academy bevat een ingebouwde code-editor, zodat je rechtstreeks in je browser echte code kunt schrijven en uitvoeren en direct feedback van AI krijgt — lokale installatie is niet nodig.

Alle lessen in deze cursus

  1. Wanneer gebruikt u WorkManager?
  2. Een Worker maken
  3. Beperkingen en planning
  4. Periodiek en gekoppeld werk
← Terug naar Android Academy