Sobes.tech
Junior

Co je WorkManager?

sobes.tech AI

Odpověď od AI

WorkManager je doporučené řešení v Androidu pro odložené provádění garantované práce na pozadí, která musí být provedena, i když aplikace byla ukončena nebo zařízení restartováno.

Je součástí sady knihoven Android Jetpack a nabízí flexibilní a spolehlivý způsob plánování úkolů.

Hlavní výhody:

  • Zaručené provedení: WorkManager zaručuje provedení práce na pozadí, i když byla aplikace násilně ukončena nebo zařízení restartováno.
  • Podpora constraints: Umožňuje definovat podmínky pro provedení práce (například dostupnost sítě, stav baterie).
  • Podpora jednorázových a periodických úkolů: Lze plánovat jak jednorázové, tak opakující se úkoly.
  • Podpora zrušení práce: Poskytuje mechanismy pro zrušení naplánované práce.
  • Kompatibilita s různými verzemi Androidu: Používá odpovídající API podle verze OS (JobScheduler, AlarmManager a BroadcastReceiver).
  • Podpora složitých pracovních grafů: Umožňuje spojovat více úkolů do řetězců nebo paralelních skupin.

Hlavní komponenty:

  • Worker: Definuje skutečnou práci, kterou je třeba vykonat.
  • WorkRequest: Definuje, jak a kdy má být práce provedena. Existují OneTimeWorkRequest a PeriodicWorkRequest.
  • WorkManager: Plánuje a spravuje WorkRequest.

Příklad použití:

// Vytvoření WorkRequest pro jednorázovou úlohu
val uploadWorkRequest: WorkRequest =
    OneTimeWorkRequestBuilder<MyUploadWorker>()
        .build()

// Naplánování úlohy
WorkManager.getInstance(context).enqueue(uploadWorkRequest)
// Příklad třídy Worker
class MyUploadWorker(
    appContext: Context,
    workerParams: WorkerParameters
) : Worker(appContext, workerParams) {

    override fun doWork(): Result {
        // Zde se provádí těžká nebo na pozadí práce
        return Result.success() // nebo Result.failure(), Result.retry()
    }
}