Sobes.tech
Junior

WorkManager чист?

sobes.tech AI

Ҷавоб аз AI

WorkManager — ин ҳалли тавсия дода мешавад дар Android барои иҷрои дертаргарондаи корҳои кафолатноки дарунӣ, ки бояд ҳатман иҷро шаванд, ҳатто агар барнома баста ё дастгоҳ бозоғоз шавад.

Ин қисми маҷмӯи китобхонаҳои Android Jetpack аст ва роҳи чандир ва боэътимод барои нақшакашии вазифаҳоро пешниҳод мекунад.

Афзалиятҳои асосӣ:

  • Иҷрои кафолатнок: WorkManager иҷрои корро дар дохили система кафолат медиҳад, ҳатто агар барнома маҷбурӣ боздошта шавад ё дастгоҳ бозоғоз шавад.
  • Дастгирии constraints: Имкон медиҳад шартҳоро барои иҷрои кор муайян кардан (масалан, дастрасии шабака, ҳолати батарея).
  • Дастгирии вазифаҳои ягона ва даврӣ: Мумкин аст вазифаҳоро ё якдафъаина ё такроршаванда нақшакашӣ кард.
  • Дастгирии бекор кардани кор: Механизмҳоро барои бекор кардани корҳои нақшакашӣ пешниҳод мекунад.
  • Масофат бо версияҳои гуногуни Android: API-ҳои мувофиқро вобаста ба версияи системаи амалӣ истифода мебарад (JobScheduler, AlarmManager ва BroadcastReceiver).
  • Дастгирии графҳои кории мураккаб: Имкон медиҳад чанд вазифаро дар занҷирҳо ё гурӯҳҳои параллелӣ муттаҳид кардан.

Компонентҳои асосӣ:

  • Worker: Корро, ки бояд иҷро шавад, муайян мекунад.
  • WorkRequest: Чӣ гуна ва кай бояд кор иҷро шавад, муайян мекунад. OneTimeWorkRequest ва PeriodicWorkRequest мавҷуданд.
  • WorkManager: нақшакашӣ ва идоракунии WorkRequest.

Маслиҳат барои истифода:

// Эҷоди WorkRequest барои вазифаи якдафъаина
val uploadWorkRequest: WorkRequest =
    OneTimeWorkRequestBuilder<MyUploadWorker>()
        .build()

// Нақшакашии вазифа
WorkManager.getInstance(context).enqueue(uploadWorkRequest)
// Мисоли синфи Worker
class MyUploadWorker(
    appContext: Context,
    workerParams: WorkerParameters
) : Worker(appContext, workerParams) {

    override fun doWork(): Result {
        // Ин ҷо кори вазнин ё дарунӣ иҷро мешавад
        return Result.success() // ё Result.failure(), Result.retry()
    }
}