Есть ли способ отключить автозапуск приложений во время загрузки? Мне нужно отключить некоторые из них (не все), такие как Facebook и т. Д., Чтобы ускорить загрузку. Я спрашиваю, как это сделать на Android 9.0.
Не вдаваясь в подробности, следует ли прекращать автозапуск приложений и каковы могут быть последствия, как обсуждалось во многих других ответах, вот мои простые решения, которые могут работать без каких-либо сторонних приложений, по крайней мере, на Android Pie.
Приложения используют BroadcastRceivers
для прослушивания трансляции ACTION_BOOT_COMPLETED , чтобы они могли запускаться при загрузке. Широковещательный приемник — это компонент приложения, который можно отключить с правами суперпользователя.
Используя диспетчер пакетов , выведите список всех широковещательных приемников, прослушивающих BOOT_COMPLETED:
~# pm query-receivers --components -a android.intent.action.BOOT_COMPLETED
Это даст список приемников вещания в формате package_name/component_name
. См. dumpsys activity broadcast-stats
и dumpsys activity broadcasts
для более подробной информации.
Теперь, чтобы отключить компонент:
~# pm disable <package/component>
Существуют такие приложения, как Autostarts
( com.elsdoerfer.android.autostarts ) и SD Maid
( eu.thedarken.sdm ), которые могут сделать то же самое для вас. Файл /data/system/users/0/package-restrictions.xml
также можно отредактировать напрямую, чтобы отключить приложения или их компоненты, но это не рекомендуется.
Можно отключить несколько широковещательных приемников приложения, и один получатель также может прослушивать несколько типов широковещательных событий .
Чтобы получить android.intent.action.BOOT_COMPLETED
, приложениям требуется android.permission.RECEIVE_BOOT_COMPLETED , что является обычным разрешением и, следовательно, не может быть отозвано пользователем.
Однако существует скрытая структура управления разрешениями, названная так, AppOps
которая обеспечивает несколько более детальный контроль над (подобными разрешениям) операциями. OP_BOOT_COMPLETED — один из них, но он не является частью AOSP, а добавляется только некоторыми пользовательскими прошивками, такими как LineageOS. Если вы находитесь на одном из таких ПЗУ, вы можете управлять поведением автозапуска с помощью adb shell
:
~$ appops set <package> BOOT_COMPLETED deny
Теперь приложению не будет разрешено получать трансляцию BOOT_COMPLETED. Есть такие приложения, как App Ops
( rikka.appops ), которые могут сделать то же самое для вас. Некоторые пользовательские ПЗУ имеют встроенные интерфейсы для AppOps с разными именами, такими как Privacy Guard , AutoStart Manager и т. д .
Обратите внимание, что AppOps :
обычно не предназначен для сторонних разработчиков приложений; большинство функций доступно только системным приложениям
Таким образом, его использование без рута может быть запрещено или станет сложнее в следующих версиях Android.
Оба вышеперечисленных метода могут остановить запуск приложений только при загрузке. Приложение также может прослушивать некоторые другие широковещательные события и может продолжать перезапускаться, если оно было убито, или непрерывно работать в фоновом режиме (как служба), если оно предназначено для этого. dumpsys activity services
Подробнее см .
Немного другой подход заключается в том, чтобы остановить работу приложений в фоновом режиме с помощью OP_RUN_IN_BACKGROUND (представлено в Nougat) и/или RUN_ANY_IN_BACKGROUND
(представлено в Pie), которые являются частью AOSP:
~$ appops set <package> RUN_IN_BACKGROUND deny
У них нет эквивалентного разрешения манифеста, но есть экспериментальное разрешение с таким же именем.
pm query-receivers
должно работать? на моем Android 7 я получаю: «Ошибка: неизвестная команда« получатели запросов »»query-intent-receivers
.Некоторым устройствам требуется root-доступ для управления разрешениями на автоматический запуск... Однако Android 5.1 позволяет это сделать с помощью настроек автоматического запуска в разделе «Безопасность».
Эта опция должна быть доступна в любой системе с AppOpps.
Также, если не на Android с этими настройками
Открыть настройки
Открытые приложения
Откройте нужное приложение
Выберите разрешения
Отключить разрешение на автозапуск
Роберт