Как отключить приложения UWP, работающие в фоновом режиме в Windows 10
В Windows 10 многие приложения работают в фоновом режиме, синхронизируют уведомления и выполняют обновления. Однако вы можете заблокировать его. Посмотрите, как отключить приложения, запущенные в фоновом режиме в Windows 10.
В Windows 10 вы найдете множество приложений, установленных по умолчанию, которые могут выполняться в фоновом режиме. Все приложения UWP (Universal Windows Platform), которые одновременно загружаются из Windows 10 Store, а также те, у которых есть новый интерфейс, имеют возможность запускаться в фоновом режиме. Это можно использовать, например, для обновления приложений или для проверки уведомлений. Приложения такого типа могут также собирать, например, статистические данные и отправлять их в Microsoft.
К счастью, как пользователь вы полностью контролируете, какие приложения работают в фоновом режиме. Вы можете отключить фоновое действие выбранных приложений или полностью заблокировать фоновое действие приложения UWP. Это позволит сэкономить аккумулятор (если у вас есть ноутбук) и сбросить систему.
Отключение приложений UWP, работающих в фоновом режиме в Windows 10
Соответствующий параметр можно найти в системных настройках. Для этого откройте меню «Пуск», затем щелкните значок шестеренки, чтобы ввести настройки.
В настройках выберите вкладку «Конфиденциальность». Появится список доступных параметров, связанных с защитой данных. В боковом меню слева перейдите к следующей вкладке с именем «Приложения в фоновом режиме».
Здесь вы можете найти список всех приложений, которые могут выполняться в фоновом режиме. Как я уже упоминал, это, конечно, приложения типа UWP, то есть системные приложения из Windows 10 или приложения, загруженные из хранилища Windows 10. Вы не найдете классические программы, такие как Windows 7.
В списке вы можете снять отметку с приложений, которые должны быть заблокированы для фоновой активности. Помните, однако, что если вы блокируете активность в фоновом режиме, он не будет получать никаких уведомлений и выполнять какие-либо операции. Например, если вы заблокируете приложение электронной почты, вы не получите уведомление о новом письме, пока вы не начнете это приложение самостоятельно.
Если вы хотите отключить сразу все приложения, работающие в фоновом режиме, достаточно переключить главный слайдер «Разрешить запуск приложений в фоновом режиме» в положение «выключено». Тогда никакое приложение UWP не будет разрешено работать в фоновом режиме.
Что это LockApp.exe в Windows 10
Процесс LockApp.exe напрямую относится к экрану блокировки Windows 10. По умолчанию можно его обнаружить в диспетчере задач. Этот процесс UWP приостановлен для повышения производительности. Он полностью безопасен и отвечает за отображение интересных изображений и фактов на загрузочном экране.
Эта статья подробнее расскажет, что это такое LockApp.exe в Windows 10. При необходимости экран блокировки можно полностью отключить. Процесс уже не будет отображаться в диспетчере задач. Вопрос, только стоит ли его отключать? Поскольку сейчас он стал действительно полезным для пользователей.
Что такое LockApp.exe
В разделе диспетчера задач можно найти процесс Экран блокировки Windows по умолчанию > LockApp.exe. Файл экрана блокировки располагается в папке: C:\ Windows\ SystemApps\ Microsoft.LockApp_cw5n1h2txyewy.
LockApp.exe — это универсальное UWP приложение, которое отвечает за отображение красивых и уникальных изображений на экране блокировки & входа. Дополнительно показываются интересные факты о месте на картинке, календарь и много другого.
Вчера был, а сейчас нет в списке процессов LockApp.exe? Для блокировки системы нажмите сочетание клавиш Win+L. Разблокируйте устройство и посмотрите, что отображается в диспетчере задач. Будет приостановлено процесс LockApp.exe.
Как отключить LockApp.exe
Можно с уверенностью отключить процесс LockApp.exe (снять задачу) особенно если он уже приостановлен. При необходимости он будет опять задействован. Например, Вам нужно заблокировать компьютер, чтобы отойти от рабочего места.
Откройте редактор реестра выполнив команду regedit в окне Win+R. Перейдите в расположение: HKEY_LOCAL_MACHINE\ SOFTWARE\ Microsoft\ Windows\ CurrentVersion\ Authentication\ LogonUI\ SessionData.
Найдите параметр AllowLockScreen и его значение измените на 0. Можно и другими способами попробовать убрать экран блокировки в Windows 10. После перезагрузки компьютера он не будет отображаться.
Обработка приостановки работы приложения
Важные API
Узнайте, как сохранить важные данные приложения, когда система приостанавливает его работу. В примере регистрируется обработчик события для события Suspending и сохраняется строка в файл.
Регистрация обработчика события приостановки
Регистрируется обработка события Suspending, которое сигнализирует, что приложение должно сохранить свои данные перед тем, как система приостановит его работу.
Сохранение данных приложения перед приостановкой
При обработке события Suspending приложение имеет возможность сохранить свои важные данные в функции обработчика. Приложение должно использовать для синхронного сохранения своих простых данных API хранилища LocalSettings.
Высвобождение ресурсов
Вам также нужно освободить монопольные ресурсы и дескрипторы файлов, чтобы другие приложения могли получать к ним доступ, пока приложение приостановлено. К примерам монопольных ресурсов относятся камеры, устройства ввода-вывода, внешние устройства и сетевые ресурсы. Явное освобождение монопольных ресурсов и дескрипторов файлов обеспечивает доступ к ним других приложений на то время, пока приложение приостановлено. Когда приложение возобновляется, оно должно повторно получать монопольные ресурсы и дескрипторы файлов.
Комментарии
Система приостанавливает работу приложения всякий раз, когда пользователь переключается на другое приложение, рабочий стол или начальный экран. Система возобновляет работу вашего приложения всякий раз, когда пользователь возвращается в него. Когда система возобновляет работу приложения, содержимое переменных и структур данных остается таким же, каким оно было до приостановки приложения. Система восстанавливает работу приложения точно с места приостановки, поэтому пользователю кажется, что приложение выполнялось в фоновом режиме.
Система старается сохранить ваше приложение и его данные в памяти, пока его выполнение приостановлено. Тем не менее, если ресурсов системы для сохранения вашего приложения в памяти недостаточно, система завершает его работу. Когда пользователь снова переключается на приостановленное приложение, работа которого была завершена, система передает событие Activated и должна восстановить данные приложения в методе OnLaunched.
Система не уведомляет приложение о завершении его работы, поэтому в случае приостановки приложение должно сохранять свои данные и освобождать монопольные ресурсы и дескрипторы файлов, а затем восстанавливать их во время активации после завершения работы.
Если вы используете асинхронный вызов в обработчике, контроль после его завершения возвращается немедленно. Это означает, что обработчик событий вернет управление приложению, которое сможет перейти в следующее состояние, даже если асинхронный вызов еще не завершен. Используйте метод GetDeferral объекта EnteredBackgroundEventArgs, который передается обработчику события, чтобы задержать приостановку после вызова метода Complete возвращенного объекта Windows.Foundation.Deferral.
Отсрочка не увеличивает время, необходимое для выполнения кода перед завершением работы приложения. Она только откладывает завершение до вызова метода Complete отсрочки или наступления крайнего срока (в зависимости от того, происходит первым). Чтобы увеличить время в состоянии Suspending, используйте ExtendedExecutionSession
чтобы повысить скорость реагирования системы в Windows 8.1, приложения получают низкий приоритет доступа к ресурсам после их приостановки. Для поддержки нового приоритета увеличено время ожидания для операции приостановки, чтобы приложение получило время, эквивалентное 5-секундному ожиданию при обычном приоритете в Windows (от 1 до 10 секунд в Windows Phone). Этот период ожидания нельзя продлить или изменить.
примечание об отладке с помощью Visual Studio: Visual Studio не позволяет Windows приостанавливать приложение, подключенное к отладчику. Это позволяет пользователю видеть пользовательский интерфейс отладчика Visual Studio во время выполнения приложения. При отладке программы с помощью Visual Studio вы можете отправить ей событие приостановки. Убедитесь, что отображается панель инструментов Место отладки, а затем щелкните значок Приостановить.
Оптимизация времени приостановки и возобновления работы
Создавайте приложения универсальной платформы Windows (UWP), которые упростят использование системы жизненных циклов процессов для эффективного восстановления после приостановки или завершения.
Launch
При повторной активации приложения после приостановки или завершения проверьте, прошел ли длительный период времени. Если да, рассмотрите вариант возвращения на главную целевую страницу приложения вместо отображения устаревших данных. Это также приведет к ускорению запуска.
При активации всегда проверяйте атрибут PreviousExecutionState параметра аргументов события (например, для запущенных активаций проверяйте LaunchActivatedEventArgs.PreviousExecutionState). Если он имеет значение ClosedByUser или NotRunning, то не стоит тратить время на восстановление ранее сохраненного состояния. В этом случае следует начать взаимодействие сначала. Это позволит ускорить запуск.
Вместо восстановления ранее сохраненного состояния можно отслеживать его и восстанавливать его только по запросу. Например, рассмотрим ситуацию, в которой приложение было приостановлено, сохранило состояние 3-х страниц, а затем было завершено. При повторном запуске и возвращении пользователя на 3-ю страницу не обязательно восстанавливать состояние первых 2-х страниц. Вместо этого можно сохранить это состояние и использовать его только тогда, когда оно необходимо.
Во время выполнения
Настоятельно рекомендуется не ждать событие приостановки для сохранения большого объема состояний. Вместо этого приложение должно постепенно сохранять небольшие объемы состояний по мере работы. Это особенно важно для больших приложений, для которых при приостановке существует риск истечения времени ожидания в случае сохранения всех данных за один раз.
При этом необходимо поддерживать баланс между постепенным сохранением и обеспечением производительности приложения при работе. Разумным компромиссом является постепенное отслеживание данных, которые были изменены (и поэтому должны быть сохранены), и использование события приостановки для фактического сохранения этих данных (на это требуется меньше времени, чем на сохранение всех данных или проверку состояния всего приложения при определения подлежащих сохранению данных).
Не используйте события окна Activated или VisibilityChanged для определения данных, подлежащих сохранению. Когда пользователь выходит из приложения, окно деактивируется, но система ожидает некоторое время (примерно 10 секунд), прежде чем приостановить приложение. Это обеспечивает более быстрое взаимодействие в том случае, если пользователь быстро возвращается к приложению. Для выполнения логики приостановки следует дождаться события приостановки.
Приостановить
Во время приостановки следует уменьшить используемый приложением объем памяти. Если во время приостановки приложение использует меньше памяти, увеличивается быстродействие всей системы и меньше приостановленных приложений (включая ваше) подвергается завершению. Однако следует предусмотреть возможность быстрого возобновления работы. Не уменьшайте объем используемой памяти слишком сильно — это значительно замедлит процесс возобновления, так как приложению потребуется перезагружать в память слишком много данных.
При использовании управляемых приложений система выполняет сбор мусора после завершения работы обработчиков приостановки приложений. Используйте эту возможность, освобождая ссылки на объекты. Это позволит сократить объем памяти, используемой приложением во время приостановки.
В идеале приложение выполняет логику приостановки менее чем за 1 секунду. Чем быстрее вы сможете выполнить приостановку, тем лучше. Это позволяет улучшить взаимодействие с пользователем для других приложений и компонентов системы. Если необходимо, выполнение логики приостановки может занимать до 5 секунд на настольных и до 10 секунд на мобильных устройствах. При превышении этих значений работа приложения будет сразу же завершена. Такой исход нежелателен, поскольку в этом случае при повторном обращении к приложению будет запускаться новый процесс. Скорость взаимодействия в этом случае будет ниже, чем при возобновлении приостановленного приложения.
Возобновить
Большинство приложений не выполняет каких-либо особых действий при возобновлении, поэтому обычно данное событие не нуждается в обработке. Некоторые приложения используют возобновление для восстановления подключений, закрытых во время приостановки, а также для обновления данных, которые могли устареть. Вместо автоматического выполнения этих действий спроектируйте приложение так, чтобы они выполнялись по требованию. В результате при последующем включении приостановленного приложения скорость взаимодействие будет выше. Кроме того, будут выполняться только те задачи, которые действительно необходимы пользователю.
Избегайте ненужного завершения работы
Система жизненных циклов процессов UWP может приостановить или завершить выполнение приложения по ряду причин. Данный процесс предназначен для возврата приложения в то состояние, в котором оно находилось перед приостановкой или завершением его выполнения. Если данный процесс работает хорошо, то пользователь даже не будет знать, что работа приложения вообще была остановлена. Вот несколько приемов, которые могут использоваться вашим приложением UWP для упрощения переходных процессов системы в жизненном цикле приложения.
Приложение может быть приостановлено, если пользователь переводит его в фоновый режим или если система переходит в режим пониженного энергопотребления. Если работа приложения приостанавливается, в нем возникает соответствующее событие, и у приложения есть до пяти секунд, чтобы сохранить данные. Если за эти пять секунд работа обработчика события приостановки не завершилась, система считает приложение зависшим и принудительно завершает его. Завершенное приложение должно пройти через длительный процесс запуска заново вместо того, чтобы, когда пользователь переключается на него, загрузиться в память немедленно.
Выполняйте сериализацию только в случае необходимости
Во время приостановки многие приложения выполняют сериализацию всех своих данных. Однако если вам нужно сохранить только небольшой объем параметров приложения, лучше всего использовать для этого хранилище LocalSettings, а не выполнять сериализацию данных. Используйте сериализацию для больших объемов данных и данных, не являющихся параметрами приложения.
Если вы выполняете сериализацию данных, следует избегать повторной сериализации, если они не изменились. В этом случае приложение тратит дополнительное время на сериализацию и сохранение данных, плюс дополнительное время при возобновлении работы — на их чтение и десериализацию. Поэтому рекомендуется, чтобы приложение проверяло, изменились ли данные, и проводило сериализацию и десериализацию только измененных данных. Хорошим способом организовать этот процесс является периодическая фоновая сериализация данных после их изменения. При использовании этой методики все, что требует сериализации во время приостановки, уже сохранено, поэтому приостановка приложения выполняется быстро.
Сериализация данных в C# и Visual Basic
DataContractSerializer легко выполнять сериализацию пользовательских классов, хотя он менее эффективен в плане производительности, чем класс XmlSerializer. Перейти на использование последнего класса стоит, если вам нужна оптимальная производительность. Вообще не стоит использовать больше одного класса сериализации и лучше всего использовать класс XmlSerializer, если вам не нужны возможности других классов сериализации.
Уменьшение используемого объема памяти
Система старается хранить в памяти как можно больше приостановленных приложений, чтобы пользователь мог быстро и без проблем переключаться между ними. Приостановленное приложение, хранящееся в памяти системы, может быть быстро выведено пользователем на передний план; при этом не надо отображать экран-заставку или выполнять продолжительные действия по загрузке. Если ресурсов для сохранения приложения в памяти недостаточно, приложение завершается. Это придает важность управлению памятью по следующим двум причинам:
Высвобождение ресурсов
Некоторые объекты, такие как файлы и устройства, занимают большой объем памяти. Рекомендуется во время приостановки приложения освободить дескрипторы этих объектов и повторно создать их впоследствии при необходимости. Приостановка приложения также является подходящим моментом для очистки всех видов кэшей, которые окажутся неприменимы после возобновления работы приложения. Дополнительно при необходимости инфраструктура XAML запускает на приложениях, созданных на языках C# и Visual Basic, сборку мусора. Это обеспечивает высвобождение любых объектов, на которые отсутствуют ссылки в коде приложения.
Быстрое возобновление работы
Работа приостановленного приложения может быть продолжена, если пользователь выводит его окно на передний план или система выходит из состояния пониженного энергопотребления. Когда работа приложения возобновляется из состояния «приостановлено», возобновление происходит с момента приостановки. Даже если выполнение приложения было приостановлено на продолжительный период, данные приложения не теряются, поскольку они были сохранены в памяти.
Большинству приложений не требуется обрабатывать событие Resuming. После возобновления работы переменные и объекты приложения будут находиться в том же самом состоянии, в котором они были во время приостановки приложения. Обрабатывайте событие Resuming, только если необходимо обновить данные или объекты, которые могли измениться за время приостановки и возобновления работы приложения: содержимое (например, обновление данных канала), сетевые подключения, которые могли потерять актуальность, или если необходимо произвести переподключение к устройству (например, к веб-камере).
Как отключить приостановку приложения UWP?
Я использую C # для разработки приложения UWP для Windows 10, работающего только на настольных компьютерах, для платформы версии 10.0.14393.0. Из-за требований бизнеса жизненный цикл приложения должен вести себя как традиционное приложение Win32.
Тем не менее, в редких случаях Windows отменяет расширенный сеанс выполнения с причиной SystemPolicy и затем приостанавливает приложение UWP.
5 ответов
ExtendedExecutionSession с ExtendedExecutionReason.Unspecified является предметом многочисленных ограничений в отношении потребления ресурсов. Поскольку у вашего тестового устройства нет батареи, наиболее вероятной причиной приостановки работы вашего приложения является его интенсивное использование памяти. Вы можете попытаться оптимизировать приложение с точки зрения потребления памяти и использовать API управления памятью, как следует из документации, но это не гарантирует, что ваше приложение никогда не будет приостановлено.
В качестве альтернативы вы можете использовать хаки, которые не позволяют приложению приостанавливаться на длительное время:
Я не знаю, является ли это предполагаемым поведением или нет, но это может помочь разрешить вашу ситуацию.
Согласно этой статье в журнале MSDN вы также можете использовать фоновые задачи для сохранить приложение в живых. В статье утверждается, что фоновые задачи должны быть предпочтительнее метода расширенного сеанса.
Реализация фоновой задачи
В манифесте приложения фоновая задача также должна быть зарегистрирована. Эта регистрация сообщает Windows тип триггера, точку входа и исполняемый узел задачи следующим образом:
Регистрация фоновых задач
Для запуска приложения используйте режим отладки Visual Studio, и приложение никогда не перейдет в приостановленное состояние. Он остается пробужденным Visual Studio.
Ах, это просто шутка.
Я думаю, что, к сожалению, вы ожидаете поведения, которое противоречит принципам разработки UWP.
Система оставляет за собой право приостановить фоновое приложение после некоторого «отступления». Если вы запрашиваете расширенный сеанс выполнения, вам также необходимо подготовиться к отзыву, поскольку подключение к сети не поддерживает работу приложения вечно.
Вариант 3. Подумайте о режиме киоска, на устройстве разрешено запускать только одно приложение, поэтому его нельзя переключить в фоновый режим и приостановить.