Sobes.tech
Junior — Middle

Ako zrušiť úlohu spustenú cez WorkManager?

sobes.tech AI

Odpoveď od AI

Ak chcete zrušiť úlohu spustenú prostredníctvom WorkManager na Android, môžete použiť metódy zrušenia poskytované samotným WorkManagerom. Hlavné spôsoby zrušenia:

  1. Zrušenie podľa ID úlohy (UUID):
val workManager = WorkManager.getInstance(context)
workManager.cancelWorkById(workRequest.id)
  1. Zrušenie podľa tagu, ak bola úloha spustená s tagom:
workManager.cancelAllWorkByTag("myTag")
  1. Zrušenie podľa názvu reťazca úloh:
workManager.cancelUniqueWork("uniqueWorkName")

Po zavolaní metódy zrušenia sa WorkManager pokúsi zastaviť vykonávanie úlohy, ak ešte nebola dokončená. Je dôležité, aby samotná úloha (Worker) implementovala správne spracovanie zrušenia, napríklad kontrolou vlajky isStopped a včasným ukončením práce.

Príklad v rámci 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()
            }
            // Vykonanie časti práce
        }
        return Result.success()
    }
}