Как Startup Manager блокирует запускаемые приложения?

Я использую рыночное приложение Startup Manager на Android, но меня немного беспокоит, как оно работает. Эффективно ли он запускается каждый раз как демон и, таким образом, предотвращает запуск приложений, или он просто меняет загрузочный флаг в приложениях, не работая в фоновом режиме?

Не могли бы вы включить ссылку на рассматриваемое приложение? Не то, чтобы мы говорили о разных вещах здесь. Разные приложения справляются с этим по-разному.
Я мог бы слишком сильно накладывать Linux на Android, но я думаю, что это приложение просто изменяет файлы инициализации Android. elinux.org/Android_Booting#.27init.27
@dotVezz это просто init.d или он действительно устанавливает логический флаг для каждого отключаемого приложения? В каждом приложении есть android.intent.action.BOOT_COMPLETED.
Ты меня кое-чему здесь научил! Так что да, если приложения используют это, то мое предположение об init.d неверно. В этом случае мне интересно, как это помешает им загрузиться. Интересно, это как-то блокирует / отзывает android.permission.RECEIVE_BOOT_COMPLETEDприложения или даже каким-то образом модифицирует приложение.

Ответы (2)

Все очень сильно зависит от используемого «менеджера запуска» и от того, рутировано ли ваше устройство. Как предполагает ответ dotVezz , некоторые просто деактивируют соответствующие «слушатели» (приложения могут получать уведомления о событиях и, таким образом, начинать работу, когда они появляются — самое известное событие; boot_completedно есть и многие другие, такие как изменение сети, SDCard установлен, батарея разряжена... Если вас интересуют подробности, см., например, В чем разница между сервисом и широковещательным приемником? ). Однако для этого требуются «корневые полномочия».

Таким образом, «менеджеры запуска», работающие без «корневых прав», в основном не делают ничего, кроме диспетчеров задач: убивают приложение после его запуска по заданному событию. Они также в большинстве случаев придерживаются события boot_completedи не заботятся о других.

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

Теперь ваш вопрос конкретно о Startup Manager . Как вы можете видеть в описании своего приложения, и как я написал выше, это приложение просто заботится о событии boot_completed: оно отключает/включает элементы автозагрузки из системной загрузки . Его разрешения не включают SUPERUSER(он же root), поэтому он не может изменять получателей/слушателей. Так что, скорее всего, он просто «убивает» приложения при их запуске. Доказательство этого вы снова можете найти в описании приложения: Примечание: для Android 2.2 и более поздних ОС устройств без рута некоторые процессы перезапускаются сразу после отключения. Они бы не стали этого делать, если бы были действительно инвалидами . Но многие приложения делают это, когда их убивают .

AutoRun Manager , о котором я упоминал ранее, поддерживает оба режима: если он используется в «базовом режиме» (который не требует рута), он убивает настроенные приложения при запуске. В «расширенном режиме» (требуется root) он «заглушает» своих слушателей, поэтому они никогда не получают широковещательную рассылку событий и, следовательно, не запускаются автоматически.

Рад, что вам это нравится! Я думаю, не нужно говорить, какой метод предпочесть (убийство или молчание)? Подсказка: №2. Особенно для тех, кто перезапускает приложения. Пусть запускают и убивают, они жрут больше батареи, чем просто не дают запускаться. И для тех, кто перезапускает, может быть порочный круг «убить-начать-убить», к счастью, обнаруженный ARM и (из описания) также может быть SUM. Тем не менее, лучше следить за этим.

Некоторые исследования показывают , что это, скорее всего, делается путем отзыва разрешений для указанных вами приложений. В частности, приложение необходимо android.permission.RECEIVE_BOOT_COMPLETEDдля запуска при запуске.

Однако, хотя это наиболее вероятная ситуация, я не могу говорить о точных функциях Startup Manager .

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