Как задать условия для выполнения фоновой задачи (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 описание различных условий выполнения фоновых задач.

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

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

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

Реагирование на системные события с помощью фоновых задач

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

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

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

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