Junior — Middle
Hoe kan een taak die via WorkManager is gestart worden, worden geannuleerd?
sobes.tech AI
Antwoord van AI
Om een taak die via WorkManager op Android is gestart te annuleren, kun je de annuleringsmethoden gebruiken die door WorkManager zelf worden aangeboden. De belangrijkste manieren van annuleren:
- Annuleren op basis van taak-ID (UUID):
val workManager = WorkManager.getInstance(context)
workManager.cancelWorkById(workRequest.id)
- Annuleren op basis van tag, als de taak met een tag is gestart:
workManager.cancelAllWorkByTag("myTag")
- Annuleren op basis van de naam van de taakketen:
workManager.cancelUniqueWork("uniqueWorkName")
Na het aanroepen van de annuleringsmethode probeert WorkManager de uitvoering van de taak te stoppen, als deze nog niet is voltooid. Het is belangrijk dat de taak zelf (Worker) een correcte afhandeling van annulering implementeert, bijvoorbeeld door het controleren van de isStopped-vlag en tijdig te stoppen.
Voorbeeld binnen de Worker:
class MyWorker(context: Context, params: WorkerParameters) : Worker(context, params) {
override fun doWork(): Result {
for (i in 0 until 100) {
if (isStopped) {
return Result.failure()
}
// Voer een deel van het werk uit
}
return Result.success()
}
}