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

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

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

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

Рекомендуется использовать следующее руководство при разработке фоновой задачи и перед публикацией вашего приложения.

Закрытие фоновых задач: Не забывайте, что когда фоновая задача завершена, необходимо вызвать метод close(). Если фоновая задача не закрывается самостоятельно, процесс, выполняющий фоновую задачу, может продолжаться, потребляя память и энергию батареи, даже после завершения или отмены фоновой задачи.

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

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

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

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

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

Ознакомьтесь с разделом Общие сведения об экране блокировки, чтобы понять, нужно ли вам размещать ваше приложение на экране блокировки.

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

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

Для универсальных приложений Windows Phone, если приложение будет обновлено, необходимо вызвать RemoveAccess, а затем — RequestAccessAsync, когда приложение будет запущено после обновления. Чтобы определить, когда приложение было обновлено, необходимо отслеживать номер версии приложения с помощью значения, сохраненного в локальных параметрах. При запуске приложения проверьте его версию. Если она новее версии в локальных параметрах, вызовите RemoveAccess и RequestAccessAsync. Для этого добавьте код, подобный следующему, и вызовите его из обработчика событий для приложения.

function checkAppVersion() {
    var localSettings = Windows.Storage.ApplicationData.current.localSettings;
    var pkgVersion = Windows.ApplicationModel.Package.current.id.version;
    var backgroundExecMgr = Windows.ApplicationModel.Background.BackgroundExecutionManager;

    var appVersion = pkgVersion.build + "." +
                        pkgVersion.major + "." +
                        pkgVersion.minor + "." +
                        pkgVersion.revision;

    if (localSettings.values["appVersion"] != appVersion)
    {
        // Our app has been updated
        localSettings.values["appVersion"] = appVersion;

        // Call removeAccess
        backgroundExecMgr.removeAccess();
    }
        
    backgroundExecMgr.requestAccessAsync();
}

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

Следующий контрольный список применяется ко всем фоновым задачам.

  • Сопоставьте вашу фоновую задачу с правильным триггером.

  • Добавьте условия, которые поспособствуют успешному выполнению вашей фоновой задачи.

  • Обработайте выполнение, завершение и отмену фоновой задачи.

  • Не отображайте пользовательский интерфейс, кроме уведомлений, плиток и обновлений индикаторов событий, из фоновой задачи.

  • Вызовите close() после завершения работы фоновой задачи.

  • Используйте постоянное хранилище для совместного использования данных фоновой задачей и приложением.

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

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

  • Не используйте взаимодействие с пользователем в фоновых задачах.

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

Windows: контрольный список для фоновых задач для приложений, поддерживающих экран блокировки

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

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

  • Убедитесь, что ваше приложение будет работать, если оно не будет размещено на экране блокировки.

  • Запрашивайте доступ к экрану блокировки с помощью метода RequestAccessAsync.

  • Включите фоновую задачу, зарегистрированную с помощью TimeTrigger, и объявите ее в манифесте приложения. Убедитесь, что точка входа и типы триггеров указаны правильно. Это необходимо для сертификации и позволяет пользователю разместить приложение на экране блокировки.

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

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

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

Другие разделы, касающиеся фоновых задач

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

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

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

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

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

Другие руководства, касающиеся экрана блокировки

Общие сведения об экране блокировки

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

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