Поддержка приложения с помощью фоновых задач (HTML)

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

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

Фоновые задачи используют пространство имен Windows.UI.WebUI.WebUIBackgroundTaskInstance для получения информации о текущем экземпляре фоновой задачи. Вы регистрируете фоновые задачи с помощью объекта BackgroundTaskBuilder. Файл JavaScript фоновой задачи указывается в качестве точки входа при регистрации фоновой задачи.

Чтобы быстро приступить к работе с фоновыми задачами, обратитесь к разделу Краткое руководство: создание и регистрация фоновой задачи.

Фоновые задачи для системных событий

Ваше приложение может отвечать на события, создаваемые системой, при помощи регистрации фоновой задачи с помощью триггера SystemTrigger. Оно может использовать любые из перечисленных ниже триггеров системных событий (определенных в SystemTriggerType) без размещения на экране блокировки.

Имя триггера Описание

InternetAvailable

Появляется доступ к Интернету.

NetworkStateChange

Происходит изменение сети, такое как изменение стоимости или подключения.

OnlineIdConnectedStateChange

ИД интернет-службы, связанный с изменением учетной записи.

SmsReceived

Установленным устройством с высокоскоростным мобильным подключением получено новое SMS-сообщение.

TimeZoneChange

В устройстве изменяется часовой пояс (например, когда система переводит часы на летнее время).

 

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

Условия для фоновых задач

Добавив условие, вы сможете контролировать выполнение фоновой задачи даже после ее запуска. При активации фоновая задача не будет выполняться, пока не будут соблюдены все условия. Можно использовать следующие условия (представленные перечислением SystemConditionType).

Имя условия Описание
InternetAvailable

Интернет должен быть доступен.

InternetNotAvailable

Интернет должен быть недоступен.

SessionConnected

Сеанс должен быть подключен.

SessionDisconnected

Сеанс должен быть отключен.

 

См. также: Задание условий для выполнения фоновой задачи.

Требования к манифесту приложения

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

Фоновые задачи для приложений, поддерживающих экран блокировки

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

Канал управления: Фоновые задачи могут поддерживать подключение и получать сообщения по каналу управления, используя ControlChannelTrigger. Подробнее: Как использовать триггер канала управления. (Обратите внимание, что фоновые задачи канала управления могут быть реализованы только на C# или C++.) ControlChannelTrigger не поддерживается в Windows Phone.

Таймер: Фоновые задачи могут выполняться через каждые 15 минут, и их можно настроить на выполнение в определенное время, используя TimeTrigger. См. также: Запуск фоновой задачи по таймеру.

Push-уведомление: Фоновые задачи отвечают на PushNotificationTrigger, чтобы получать необработанные push-уведомления. См. также: Получение необработанного уведомления.

Примечание  Только приложения Магазина Windows. Пользователь должен разместить приложение на экране блокировки, прежде чем оно сможет использовать эти фоновые задачи. Приложение может запросить доступ к экрану блокировки, вызвав RequestAccessAsync. Здесь представлено диалоговое окно, где пользователь может разрешить или не разрешить приложению находиться на экране блокировки. Приложениям разрешается запрашивать экран блокировки лишь один раз. Все последующие вызовы RequestAccessAsync игнорируются.

Примечание  

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

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

Триггеры системных событий для приложений, поддерживающих экран блокировки

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

Имя триггера Описание

UserPresent

Фоновая задача запускается в присутствии пользователя.

UserAway

Фоновая задача запускается в отсутствие пользователя.

ControlChannelReset

Фоновая задача запускается при сбросе канала управления.

SessionConnected

Фоновая задача запускается при подключенном сеансе.

 

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

Имя триггера Описание

LockScreenApplicationAdded

На экран блокировки добавляется плитка приложения.

LockScreenApplicationRemoved

С экрана блокировки удаляется плитка приложения.

 

 

Ограничения на ресурсы фоновых задач

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

  • Загрузка ЦП ограничена следующим образом.

    Квота на использование ЦП Время обновления
    Приложение для Windows отсутствует на экране блокировки

    1 секунда

    2 часа

    Приложение для Windows находится на экране блокировки

    2 секунды

    15 минут

    Приложение для Windows Phone

    2 секунды

    15 минут

     

  • При питании от батареи (источника постоянного тока) на фоновые задачи также распространяется ограничение на использование сетевых данных. Это ограничение — функция количества энергии, потребляемого сетевым интерфейсом, поэтому оно меняется в зависимости от устройства и сетевой среды, но его можно оценить.

    В следующей таблице показана пропускная способность сетевых данных для сети Wi-Fi с ограниченными ресурсами и средней пропускной способностью 1 Мбит/с. Чтобы оценить правильный предельный объем данных, умножьте это число на среднюю скорость подключения в мегабитах в секунду (Мбит/с). Например, приложение может использовать 25 МБ данных каждые 2 часа по сети Wi-Fi с пропускной способностью 10 Мбит/с, если оно размещено на экране блокировки. В этом примере интерфейса Wi-Fi предполагаются минимальные помехи.

    Период обновления 15 минут 2 часа Ежедневно
    Ограничение на использование данных (на экране блокировки) 0,469 МБ нет 45 MБ
    Ограничение на использование данных (не на экране блокировки) нет 0,625 MБ 7,5 MБ

     

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

     

Дополнительные ограничения на ресурсы фоновых задач для универсальных приложений Windows Phone

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

Ограничения на использование памяти

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

Тип фоновой задачи 512 МБ 1 ГБ 2 ГБ и выше
Расположение 16 30 40
Bluetooth 16 16 16
Обслуживание завершено 10 10 10
Прочие фоновые задачи 16 30 40
Ограничение при отладке 30 40 50

 

Ограничения "на устройство" для приложений с фоновыми задачами для устройств с небольшим объемом памяти

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

Экономия заряда аккумулятора

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

Триггер обслуживания

С помощью триггера обслуживания приложение может выполнять задачи через каждые 15 минут. Задачи обслуживания выполняются только в том случае, если устройство подключено к сети переменного тока, и не требуют размещения на экране блокировки. См. также: Использование триггеров обслуживания.

Фоновая задача для датчиков и устройств

Ваше приложение может получать доступ к датчикам и периферийным устройствам из фоновой задачи с помощью класса DeviceUseTrigger. Этот триггер можно использовать для продолжительных операций, таких как синхронизация данных или мониторинг. В отличие от задач для системных событий, задачу DeviceUseTrigger можно инициировать только во время работы приложения на переднем плане, и для нее невозможно установить какие-либо условия. В зависимости от устройства (компьютера или телефона) фоновая задача DeviceUseTrigger поддерживает разные API и регулируется разными политиками. Подробнее об этих различиях см. в разделе о получении доступа к датчикам и устройствам из фоновой задачи.

Некоторые критические операции с устройством, например длительные обновления встроенного ПО, не могут выполняться с помощью DeviceUseTrigger. Такие операции могут выполняться только на компьютере и только привилегированным приложением, которое использует DeviceServicingTrigger. Привилегированным называется приложение, которому изготовитель устройства разрешил выполнять эти операции. Метаданные устройства позволяют указать, какое приложение (при его наличии) было назначено в качестве привилегированного приложения на устройстве. Подробнее см. в разделе о синхронизации и обновлении устройства с приложениями Магазина Windows для устройства.

Управление фоновыми задачами

Фоновые задачи могут передавать в приложение сообщения о ходе выполнения, завершении или отмене с помощью событий и локального хранилища. Кроме того, можно перехватывать исключения, поступающие от фоновой задачи, и управлять ее регистрацией в процессе обновления приложения. См. также:

Обработка отмененной фоновой задачи

Получение списка отложенных фоновых задач

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

Использование триггера ServicingComplete

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

Концептуальное руководство по многозадачности в Windows 8

Введение в фоновые задачи

Запуск, возобновление и многозадачность

Руководство по пользовательскому интерфейсу экрана блокировки

Отображение плиток на экране блокировки

Руководство и контрольный список для плиток экрана блокировки

Руководство по фоновым задачам

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

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

Вызов событий приостановки, возобновления и фоновых событий в приложениях для Магазина Windows (во время отладки)

Доступ к датчикам и устройствам из фоновой задачи

Синхронизация и обновление устройства с приложениями Магазина Windows для устройства