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()