Как отвечать на системные события с помощью фоновых задач (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. Это позволяет им поддерживать связь с пользователем в реальном времени, даже когда приложение не находится на переднем плане. Дополнительные сведения см. в разделе Поддержка приложения с помощью фоновых задач.
Связанные разделы
Краткое руководство: создание и регистрация фоновой задачи
Задание условий для выполнения фоновой задачи
Использование триггеров обслуживания