Sobes.tech
Middle
97
questionbank

Какие виды WorkRequest ты знаешь и какие критерии можно к ним применить?

Ответ от нейросети

sobes.tech AI

Виды WorkRequest:

  • OneTimeWorkRequest: Выполняется один раз, когда удовлетворяются его ограничения.
  • PeriodicWorkRequest: Выполняется многократно через определенный интервал времени.

Критерии (Constraints), которые можно применить к WorkRequest:

  • setRequiredNetworkType(NetworkType networkType): Тип требуемой сети (CONNECTED, UNMETERED, NOT_ROAMING, METERED, NOT_REQUIRED).
  • setRequiresCharging(boolean requiresCharging): Требуется ли зарядка устройства.
  • setRequiresDeviceIdle(boolean requiresDeviceIdle): Требуется ли, чтобы устройство находилось в состоянии бездействия.
  • setRequiresBatteryNotLow(boolean requiresBatteryNotLow): Требуется ли, чтобы уровень заряда батареи не был низким.
  • setRequiresStorageNotLow(boolean requiresStorageNotLow): Требуется ли, чтобы место на диске не заканчивалось.
  • addContentUriTrigger(Uri uri, boolean triggerContentMaxDelay): Триггер при изменении контента по указанному Uri.
  • setTriggerContentUpdateDelay(long duration, TimeUnit unit): Задержка перед запуском после изменения контента (для OneTimeWorkRequest).
  • setTriggerContentMaxDelay(long duration, TimeUnit unit): Максимальная задержка перед запуском после изменения контента (для PeriodicWorkRequest).

Пример создания OneTimeWorkRequest с ограничениями:

// Создаем ограничения
val constraints = Constraints.Builder()
    .setRequiredNetworkType(NetworkType.CONNECTED)
    .setRequiresCharging(true)
    .build()

// Создаем OneTimeWorkRequest с ограничениями
val workRequest = OneTimeWorkRequestBuilder<MyWorker>()
    .setConstraints(constraints)
    .build()

Пример создания PeriodicWorkRequest с ограничениями:

// Создаем ограничения
val constraints = Constraints.Builder()
    .setRequiresDeviceIdle(true)
    .build()

// Создаем PeriodicWorkRequest с ограничениями
val periodicWorkRequest = PeriodicWorkRequestBuilder<MyWorker>(15, TimeUnit.MINUTES)
    .setConstraints(constraints)
    .build()