Заметка
Доступ к этой странице требует авторизации. Вы можете попробовать войти в систему или изменить каталог.
Доступ к этой странице требует авторизации. Вы можете попробовать сменить директорию.
Универсальные приложения Windows должны работать согласованно во всех семействах устройств. На устройствах, подключенных к батарее, потребление электроэнергии является критически важным фактором в общем опыте пользователя с приложением. Время работы батареи в течение всего дня является важной особенностью для каждого пользователя, но она требует эффективности от всего программного обеспечения, установленного на устройстве, включая ваше собственное.
Поведение фоновой задачи, возможно, является самым важным фактором в общем энергопотреблении приложения. Фоновая задача — это любое действие программы, зарегистрированное в системе для запуска без открытия приложения. Дополнительные сведения см. в статье "Создание и регистрация фоновой задачи вне процесса ".
Разрешения фонового действия
На настольных и мобильных устройствах под управлением Windows 10 версии 1607 или более поздней версии пользователи могут просматривать их "Использование батареи по приложению" в разделе "Параметры Windows". Здесь вы увидите список приложений и процент заряда батареи, которые каждое приложение потребляло (из объема заряда батареи, используемого с момента последнего заряда). Для приложений UWP в этом списке пользователи могут выбрать приложение, чтобы открыть элементы управления, связанные с фоновым действием.
Разрешения фона на мобильных устройствах
На мобильных устройствах пользователи увидят список радиокнопок, задающих параметр разрешения фоновой задачи для этого приложения. Фоновое действие можно задать как "Всегда разрешено", "Никогда не разрешено" или "Управляемое Windows", что означает, что фоновое действие приложения регулируется системой в соответствии с рядом факторов.
Разрешения фона на рабочем столе
На настольных устройствах параметр «Управляемые Windows» отображается как переключатель, по умолчанию установленный в положение «Вкл». Если пользователь переключается на Выкл, ему предоставляется возможность задать разрешения для фоновой активности вручную с помощью флажка. Если флажок установлен, приложение будет разрешено выполнять фоновые задачи в любое время. Если флажок снят, фоновые действия будут отключены.
В вашем приложении можно использовать значение перечисления BackgroundAccessStatus, возвращаемое вызовом метода BackgroundExecutionManager.RequestAccessAsync(), чтобы определить текущие настройки разрешения на фоновую активность.
Это означает, что если ваше приложение не реализует ответственное управление фоновыми действиями, пользователь может вообще запретить фоновый доступ вашему приложению, что нежелательно для обеих сторон. Если приложению было отказано в разрешении на запуск в фоновом режиме, но требуется фоновое действие для выполнения действия для пользователя, вы можете уведомить пользователя и указать им параметры Windows. Это можно сделать, выполнив запуск параметров Windows на странице "Фоновые приложения" или "Сведения об использовании батареи".
Работа с функцией экономии батареи
Экономия батареи — это функция уровня системы, которую пользователи могут настроить в параметрах. Он отключает все фоновые действия всех приложений, когда уровень батареи снижается ниже определяемого пользователем порогового значения, за исключением фонового действия приложений, которые были заданы как "Всегда разрешено".
Проверьте состояние режима экономии батареи в приложении, ссылаясь на свойство PowerManager.EnergySaverStatus . Это значение перечисления: EnergySaverStatus.Disabled, EnergySaverStatus.Off или EnergySaverStatus.On. Если приложению требуется фоновое действие и не задано значение "Всегда разрешено", оно должно обрабатывать EnergySaverStatus.On , уведомляя пользователя о том, что заданные фоновые задачи не будут выполняться, пока экономия батареи не будет отключена. Хотя фоновое управление действиями является основной целью функции экономии заряда батареи, ваше приложение может внести дополнительные корректировки для дальнейшей экономии энергии при включении экономии батареи. В случае, когда включено средство экономии батареи, ваше приложение может сократить использование анимации, остановить опрос расположения или отложить синхронизацию и резервные копии.
Дальнейшая оптимизация фоновых задач
Ниже приведены дополнительные шаги, которые можно предпринять при регистрации фоновых задач, чтобы сделать их более энергоэффективными.
Использование триггера обслуживания
Объект MaintenanceTrigger можно использовать вместо объекта SystemTrigger , чтобы определить, когда начинается фоновая задача. Задачи, использующие триггеры обслуживания, будут выполняться только в том случае, если устройство подключено к питанием AC, и они могут выполняться дольше. См. раздел "Использование триггера обслуживания" для получения инструкций.
Используйте тип состояния системы BackgroundWorkCostNotHigh
Системные условия должны выполняться, чтобы фоновые задачи выполнялись (дополнительные сведения см. в разделе "Задание условий" для выполнения фоновой задачи ). Фоновая стоимость работы — это измерение, обозначающее относительное влияние энергии на выполнение фоновой задачи. Задача, выполняемая при подключении устройства к питания AC, будет помечена как низкая (мало или нет влияния на батарею). Задача, выполняемая, когда устройство находится на заряде батареи с выключенным экраном, помечается как высокая , так как в то время на устройстве выполняется мало программных действий, поэтому фоновая задача будет иметь большую относительную стоимость. Задача, выполняемая, когда устройство работает на батарее с включенным экраном, помечается как средняя, так как предположительно некоторая программа уже активна, и фоновая задача понесет дополнительные затраты на энергию. Условие системы BackgroundWorkCostNotHigh просто задерживает возможность выполнения задачи до тех пор, пока экран не включен или устройство подключено к сети переменного тока.
Проверка эффективности батареи
Обязательно протестируйте приложение на реальных устройствах для любых сценариев с высоким потреблением энергии. Хорошей идеей будет протестировать приложение на многих разных устройствах, с включенным и выключенным режимом энергосбережения и в средах с различной силой сигнала сети.