Sobes.tech
Junior

Čo je WorkManager?

sobes.tech AI

Odpoveď od AI

WorkManager je odporúčané riešenie v Androidu pre odložené vykonávanie garantovanej práce na pozadí, ktorá musí byť vykonaná, aj keď je aplikácia zatvorená alebo zariadenie reštartované.

Je súčasťou sady knižníc Android Jetpack a ponúka flexibilný a spoľahlivý spôsob plánovania úloh.

Hlavné výhody:

  • Zaručené vykonanie: WorkManager garantuje vykonanie práce na pozadí, aj keď bola aplikácia nútene ukončená alebo zariadenie reštartované.
  • Podpora constraints: Umožňuje definovať podmienky pre vykonanie práce (napríklad dostupnosť siete, stav batérie).
  • Podpora jednorazových a periodických úloh: Môžete plánovať ako jednorazové, tak opakujúce sa úlohy.
  • Podpora zrušenia práce: Poskytuje mechanizmy na zrušenie naplánovanej práce.
  • Kompatibilita s rôznymi verziami Androidu: Používa príslušné API v závislosti od verzie OS (JobScheduler, AlarmManager a BroadcastReceiver).
  • Podpora zložitých pracovných grafov: Umožňuje spájanie viacerých úloh do reťazcov alebo paralelných skupín.

Hlavné komponenty:

  • Worker: Definuje skutočnú prácu, ktorú je potrebné vykonať.
  • WorkRequest: Definuje, ako a kedy má byť práca vykonaná. Existujú OneTimeWorkRequest a PeriodicWorkRequest.
  • WorkManager: Plánuje a spravuje WorkRequest.

Príklad použitia:

// Vytvorenie WorkRequest pre jednorazovú úlohu
val uploadWorkRequest: WorkRequest =
    OneTimeWorkRequestBuilder<MyUploadWorker>()
        .build()

// Naplánovanie úlohy
WorkManager.getInstance(context).enqueue(uploadWorkRequest)
// Príklad triedy Worker
class MyUploadWorker(
    appContext: Context,
    workerParams: WorkerParameters
) : Worker(appContext, workerParams) {

    override fun doWork(): Result {
        // Tu sa vykonáva ťažká alebo pozadinská práca
        return Result.success() // alebo Result.failure(), Result.retry()
    }
}