Как отвечать на системные события с помощью фоновых задач (HTML)

[ Эта статья адресована разработчикам приложений среды выполнения Windows для Windows 8.x и Windows Phone 8.x. При разработке приложений для Windows 10 см. раздел последняя документация]

Сведения о том, как создавать фоновые задачи, отвечающие на триггеры системных событий. Приложения Магазина Windows поддерживают взаимодействие с пользователем, даже когда не находятся на переднем плане, благодаря связыванию специального облегченного кода с событиями SystemTrigger. Этот специальный код выполняется в фоновых задачах.

Что необходимо знать

Технологии

Необходимые условия

  • В данном разделе предполагается, что для вашего приложения создан класс фоновой задачи, которую требуется запустить в ответ на событие, активированное системой, например, при появлении доступа к Интернету или входе пользователя в систему. Для выполнения фоновых задач, зарегистрированных с помощью классов SystemTrigger и MaintenanceTrigger, не требуется, чтобы приложение находилось на экране блокировки. В этом разделе мы подробно рассмотрим класс SystemTrigger. Дополнительные сведения о создании класса фоновой задачи см. в разделе Краткое руководство: создание и регистрация фоновой задачи.

Инструкции

Этап 1: Создание объекта SystemTrigger

Создайте новый объект SystemTrigger в коде вашего приложения. Первый параметр, triggerType, задает тип триггера системного события, который будет активировать эту фоновую задачу. Список типов событий см. в разделе SystemTriggerType.

Второй параметр, OneShot, указывает, будет ли фоновая задача выполняться однократно при следующем возникновении системного события и активации фоновых задач, или она будет выполняться всякий раз при возникновении этого события, пока не отменена регистрация задачи.

Следующий код указывает, что фоновая задача выполняется при появлении доступа к Интернету:

var internetTrigger = new Windows.ApplicationModel.Background.SystemTrigger(InternetAvailable, false);

Этап 2: Добавление условия (необязательно)

При необходимости можно также добавить условие фоновой задачи, чтобы контролировать время запуска задачи. Условие не даст запустить фоновую задачу, пока это условие не будет выполнено. Подробнее см. в разделе Задание условий для выполнения фоновой задачи.

В этом примере условию присвоено значение UserPresent, благодаря чему фоновая задача выполняется только во время активного пользования устройством (или когда пользователь становится доступен). Список возможных условий фоновых задач см. в разделе SystemConditionType.

В следующем коде к фоновой задаче добавляется условие:

var exampleCondition = new Windows.ApplicationModel.Background.SystemCondition(Windows.ApplicationModel.Background.SystemCondition.UserPresent);

Этап 3: Регистрация фоновой задачи

Зарегистрируйте фоновую задачу, вызвав функцию регистрации фоновой задачи. Подробнее о регистрации фоновых задач см. в разделе Регистрация фоновой задачи.

Следующий код регистрирует фоновую задачу:

var entryPoint = “js\\ExampleBackgroundTask.js”;
var taskName = “Internet-based background task”;

var task = RegisterBackgroundTask(entryPoint, taskName, internetTrigger, exampleCondition);

Примечание  

В приложениях магазина Windows Phone необходимо вызывать метод RequestAccessAsync перед регистрацией любой фоновой задачи. В Windows такой вызов требуется только для набора фоновых задач, для выполнения которых приложение должно находиться на экране блокировки, однако в Windows Phone вы должны один раз вызывать этот метод перед регистрацией любой фоновой задачи.

Чтобы приложение Windows Phone продолжало правильно работать после выпуска обновления, необходимо вызвать RemoveAccess, а затем RequestAccessAsync при запуске приложения после обновления. Дополнительная информация: Руководство по фоновым задачам (HTML).

Примечание  

Начиная с Windows 8.1 параметры регистрации фоновых задач проверяются во время регистрации. Если какие-либо из параметров регистрации недопустимы, возвращается ошибка. Ваше приложение должно обрабатывать ситуации, в которых регистрация фоновой задачи завершается ошибкой. Например, можно проверять ошибки регистрации в условном операторе, а затем — в случае ошибки — повторять регистрацию с другими значениями параметров.

 

Замечания

Чтобы увидеть регистрацию фоновой задачи в действии, скачайте образец фоновой задачи.

Фоновые задачи можно запускать в ответ на события SystemTrigger и MaintenanceTrigger без помещения на экран блокировки, но все равно необходимо объявить фоновые задачи в манифесте приложения. В Windows Phone также необходимо вызывать метод RequestAccessAsync перед регистрацией фоновых задач любого типа.

Приложения на экране блокировки способны регистрировать фоновые задачи, которые выполняются в ответ на события TimeTrigger, PushNotificationTrigger и NetworkOperatorNotificationTrigger. Это позволяет им поддерживать связь с пользователем в реальном времени, даже когда приложение не находится на переднем плане. Дополнительные сведения см. в разделе Поддержка приложения с помощью фоновых задач.

Связанные разделы

Краткое руководство: создание и регистрация фоновой задачи

Регистрация фоновой задачи

Задание условий для выполнения фоновой задачи

Использование триггеров обслуживания

Объявление фоновых задач в манифесте приложения

Отладка фоновой задачи

Руководство и контрольный список для фоновых задач