В прошлой теме была продемонстрирована простейшая задача, которая запускалась с помощью простейшего триггера - 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
: пользователь не осуществил вход в систему