Триггеры и условия

Последнее обновление: 02.03.2016

В прошлой теме была продемонстрирована простейшая задача, которая запускалась с помощью простейшего триггера - ApplicationTrigger. Однако характер и задач и форма их запуска может быть иной. Для запуска в различных ситуациях мы можем использовать еще ряд триггеров. Наиболее используемыми являются TimeTrigger и SystemTrigger.

TimeTrigger позволяет запускать задачу периодически через определенный интервал.

SystemTrigger запускает задачу в ответ на определенные системные события.

Общая форма использования всех триггеров будет аналогична. Например, применим TimeTrigger:

TimeTrigger timer = new TimeTrigger(15, false);
taskBuilder.SetTrigger(appTrigger);

Число 15 указывает количество минут, через которые будет запускаться задача. Меньше 15 минут установить нельзя. И при использовании этого триггера также надо будет указать в качестве типа задачи не General, а Timer.

Либо мы можем создать задачу, которая бы запускалась в случае каких-то системных событий. Например, при появлении подключения к интернету. Для этого используется триггер SystemTrigger:

SystemTrigger trigger = new SystemTrigger(SystemTriggerType.InternetAvailable, false);
taskBuilder.SetTrigger(appTrigger);

А в качестве типа задачи в манифесте следует указать тип System event

Метод RequestAsync() для запуска задачи в этом случае вызывать не надо, так как задача вызывается при генерации системных событий, а именно - появлении подключения к интернету.

Список возможных системных событий, которые мы можем использовать в системном триггере:

  • SmsReceived: задача запускается при получении смс

  • UserPresent: задача запускается, когда пользователь становится активен на текущем устройстве

  • UserAway: задача запускается, когда пользователь становится не активен

  • NetworkStateChange: задача запускается, когда меняется состояние сети

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

  • SessionConnected: задача запускается, когда пользователь входит в систему

  • ServicingComplete: задача запускается, когда система заканчивает обновление приложения

  • LockScreenApplicationAdded: задача запускается, когда на экран блокировки добавляется плитка приложения

  • LockScreenApplicationRemoved: задача запускается, когда с экрана блокировки удаляется плитка приложения

  • TimeZoneChange: запускается при смене часового пояса

  • OnlineIdConnectedStateChange: запускается, когда аккаунт Microsoft добавляется к аккаунтам на устройстве

Использование условий

Дополнительно к настройкам триггеров мы можем задать ряд условий для запуска задачи. Например, необходимо, чтобы триггер таймера запускал задачу только в случае наличия интернет-соединения:

TimeTrigger timer = new TimeTrigger(15, false);
taskBuilder.AddCondition(new SystemCondition(SystemConditionType.InternetAvailable));
taskBuilder.SetTrigger(appTrigger);

Для определения условий применяется метод AddCondition() объекта BackgroundTaskBuilder, а само условие предоставляет одно из значений перечисления SystemConditionType. Доступные значения:

  • UserPresent: пользователь работает с устройством

  • UserNotPresent: пользователь не активен

  • InternetAvailable: наличие соединения к интернету

  • InternetNotAvailable: отсутствие наличия подключения

  • SessionConnected: пользователь осуществил вход в систему

  • SessionDisconnected: пользователь не осуществил вход в систему

Помощь сайту
Юмани:
410011174743222
Перевод на карту
Номер карты:
4048415020898850