Как задать условия для выполнения фоновой задачи (HTML)
[ Эта статья адресована разработчикам приложений среды выполнения Windows для Windows 8.x и Windows Phone 8.x. При разработке приложений для Windows 10 см. раздел последняя документация]
Вы узнаете, как задать условия, чтобы обеспечить запуск фоновой задачи только в надлежащее время. Иногда для успешного выполнения фоновых задач требуется соблюдение определенных условий в дополнение к событию, которое инициирует выполнение задачи. При регистрации фоновой задачи можно указать одно или несколько условий, определяемых типом SystemConditionType. Условия проверяются после срабатывания триггера. Фоновая задача помещается в очередь и выполняется только при соблюдении всех требуемых условий.
Настройка условий для фоновых задач продлевает время работы батареи и сокращает время использования ЦП, так как препятствует запуску задач без необходимости. Например, если фоновая задача запускается по таймеру и требует подключения к Интернету, перед регистрацией задачи добавьте условие InternetAvailable в TaskBuilder. Это помогает избежать ненужного использования системных ресурсов или заряда батареи, запуская выполнение задачи при срабатывании таймера и наличии доступа к Интернету.
Что необходимо знать
Технологии
Необходимые условия
- Для работы с этим разделом вы должны иметь связанную с приложением фоновую задачу, а ваше приложение должно содержать код, который создает объект BackgroundTaskBuilder с именем taskBuilder.
Инструкции
Этап 1: Создание объекта SystemCondition
Прежде чем добавлять само условие, создайте объект SystemCondition для представления условия, которое должно соблюдаться для запуска задачи. Задайте в конструкторе необходимое для выполнения условие, указав значение перечисления SystemConditionType.
Следующий код создает объект SystemCondition, указывающий доступность Интернета в качестве условного требования:
var internetCondition = new Windows.ApplicationModel.Background.SystemCondition(Windows.ApplicationModel.Background.SystemConditionType.InternetAvailable);
Этап 2: Добавление объекта SystemCondition в фоновую задачу
Чтобы добавить условие, вызовите метод AddCondition применительно к объекту BackgroundTaskBuilder и передайте его объекту SystemCondition.
Следующий код регистрирует условие фоновой задачи InternetAvailable с помощью TaskBuilder:
taskBuilder.AddCondition(internetCondition);
Этап 3: Регистрация фоновой задачи
Теперь вы можете зарегистрировать свою фоновую задачу с помощью метода Register, при этом задача запускается только при соблюдении заданного условия.
В следующем коде регистрируется задача и сохраняется полученный в результате объект BackgroundTaskRegistration:
var task = taskBuilder.Register();
Примечание
В приложениях магазина Windows Phone необходимо вызывать метод RequestAccessAsync перед регистрацией любой фоновой задачи. В Windows такой вызов требуется только для набора фоновых задач, для выполнения которых приложение должно находиться на экране блокировки, однако в Windows Phone вы должны один раз вызывать этот метод перед регистрацией любой фоновой задачи.
Чтобы приложение Windows Phone продолжало правильно работать после выпуска обновления, необходимо вызвать RemoveAccess, а затем RequestAccessAsync при запуске приложения после обновления. Дополнительная информация: Руководство по фоновым задачам (HTML).
Примечание
Начиная с Windows 8.1 параметры регистрации фоновых задач проверяются во время регистрации. Если какие-либо из параметров регистрации недопустимы, возвращается ошибка. Ваше приложение должно обрабатывать ситуации, в которых регистрация фоновой задачи завершается ошибкой. Например, можно проверять ошибки регистрации в условном операторе, а затем — при ошибке — повторять регистрацию с другими значениями параметров.
Этап 4: Размещение в фоновой задаче нескольких условий
Чтобы добавить несколько условий, приложение неоднократно вызывает метод AddCondition. Чтобы быть эффективными, такие вызовы должны предшествовать регистрации задачи.
Примечание Следите за тем, чтобы не добавлять в фоновую задачу конфликтующие условия.
Следующий фрагмент кода демонстрирует несколько условий в контексте создания и регистрации фоновой задачи:
var hourlyTrigger = new Windows.ApplicationModel.Background.TimeTrigger(60, false);
var recurringTaskBuilder = new Windows.ApplicationModel.Background.BackgroundTaskBuilder();
recurringTaskBuilder.Name = "Hourly background task for YourApp";
recurringTaskBuilder.TaskEntryPoint = "js\\ExampleBackgroundTask.js";
recurringTaskBuilder.SetTrigger(hourlytrigger);
//
// Begin adding conditions.
//
var userCondition = new Windows.ApplicationModel.Background.SystemCondition(Windows.ApplicationModel.Background.SystemConditionType.UserPresent);
var internetCondition = new Windows.ApplicationModel.Background.SystemCondition(Windows.ApplicationModel.Background.SystemConditionType.InternetAvailable);
taskBuilder.AddCondition(userCondition);
taskBuilder.AddCondition(internetCondition);
//
// Done adding conditions. Now we register the background task.
//
var task = recurringTaskBuilder.Register();
Замечания
Примечание Выберите верные условия для фоновой задачи, чтобы она запускалась, только когда необходимо, и никогда не выполнялась, когда не будет работать. См. в SystemConditionType описание различных условий выполнения фоновых задач.
Связанные разделы
Краткое руководство: создание и регистрация фоновой задачи
Реагирование на системные события с помощью фоновых задач
Использование триггеров обслуживания