- Android. Автозапуск приложения при загрузке: теория и практика
- 1. Теория
- 2. Практика: ошибки и особенности эксплуатации
- 3. Отладка ресивера в эмуляторе и на реальных устройствах.
- Итоги
- Автозапуск программ на Android: что это, как работает и как настроить
- Какие программы работают в фоновом режиме?
- Какие последствия от приложений, постоянно работающих в фоновом режиме?
- Как отключить приложение из автозапуска?
- Инструкция для Android 8, 9, 10 и выше
- Инструкция для Android 7 и ниже
- Использование All-In-One Toolbox
- Как отключить автозапуск приложений на Андроид
- Отключаем автозапуск приложений на Android
- Способ 1: All-In-One Toolbox
- Способ 2: Greenify
- Способ 3: Остановка работающих приложений вручную
- Способ 4: Удаление ненужных приложений
Android. Автозапуск приложения при загрузке: теория и практика
1. Теория
Взглянув на примеры из официального источника (например, этот и этот) и изучив рекомендации на сайте stackoverflow.com, можно выделить следующие правила:
- В манифесте в элементе «manifest» указать разрешение:
В манифесте в элементе «application» зарегистрировать ваш ресивер на прием сообщения ACTION_BOOT_COMPLETED:
Используйте правильное полное или относительное имя класса вашего broadcast-ресивера. В описании ресивера без необходимости не указывайте атрибуты «enabled», «exported» и т.д. Вполне достаточно настроек и атрибутов по умолчанию.
Код вашего broadcast-ресивера:
Если ваш ресивер используется только для сообщения ACTION_BOOT_COMPLETED, то проверка «if» не обязательна. Однако иногда разработчики используют один и тот же ресивер для разных сообщений. В этом случае фильтруйте сообщения, проверяя их внутри метода onReceive.
Приложение должно быть установлено на внутреннюю память. ОС Android устроена таким образом, что сообщение ACTION_BOOT_COMPLETED отправляется приложениям перед монтированием внешний памяти. Поэтому приложения, установленные на внешней памяти, никогда не получат это сообщение. Чтобы указать системе не устанавливать приложение на внешнюю память, в манифесте НЕ нужно прописывать для атрибута «@android:installLocation» значения «auto» или «preferExternal». По умолчанию, т.е. если этот атрибут не указан, ОС установит ваше приложение только на внутреннюю память. Однако согласно официальной документации лучше явно указать значение «internalOnly», чтобы у вас и других разработчиков не возникло искушение в будущем указать иное значение.
После установки или принудительной остановки (force stop) приложение должно быть запущено хотя бы один раз, чтобы система «запомнила» это приложение для отправки ему сообщения ACTION_BOOT_COMPLETED. Такое поведение было реализовано в версии Android 3.1 в целях безопасности. В чем суть? Все только что установленные приложения находятся в состоянии «stopped» (не путать с активити, т.к. ОС управляет этим состоянием у приложений и активити по-разному). В это же состояние приложение «уходит», когда пользователь в настройках телефона принудительно его останавливает. Пока приложение находится в таком состоянии, оно не будет запущено системой ни по какой причине (например, через ACTION_BOOT_COMPLETED), исключая, конечно же, запуск самим пользователем. Благодаря такому нововведению немалая часть«вирусни и троянцев» перестала работать, т.к. уже нет возможности запуститься автоматом после установки.
Исключение составляют системные приложения: см. замечание пользователя kolipass.
Особенности режима Fast boot в HTC-устройствах. Известно, что HTC-устройства не перезагружаются в классическом смысле, а используют так наз. режим Fast boot (это одна из форм гибернации), сохраняя состояние ОС на диск. Поэтому сообщение ACTION_BOOT_COMPLETED не отправляется системой, т.к. в действительности перезагрузка не происходит (см. здесь). Вместо ACTION_BOOT_COMPLETED система может отправить следующие сообщения:
В вашем приложении укажите в теге «receiver» кроме ACTION_BOOT_COMPLETED также вышеуказанные сообщения. Кроме этого необходимо прописать разрешение в дополнение к п.1:
2. Практика: ошибки и особенности эксплуатации
Разберем ошибки, которые совершают новички при настройке приложения и в коде.
- После установки или force stop приложение ни разу не запускалось (см. п.1.5).
Приложение установлено не на внутренней памяти, или пользователь вручную перенес его на внешнюю память (см. п. 1.4).
У некоторых разработчиков прием начинал работать, когда они указывали относительное имя класса ресивера.
Также некоторые разработчики, отлаживая приложение, в logcat не видели своих сообщений из ресивера. Используйте Toast для отладки:
Опечатки или несуществующие сообщения внутри тега ресивера:
Неправильное положение элементов в манифесте приложения:
- «uses-permission» должен быть указан только как прямой потомок элемента «manifest», не нужно его указывать/дублировать в теге «receiver»;
- тег «receiver» должен быть указан только как прямой потомок элемента «application».
Как было указано выше, некоторые устройства используют режим Fast boot. Можно попробовать в настройках телефона отключить этот режим или учесть п. 1.6.
В приложении нет ни одной активити, поэтому после установки у пользователя нет возможности хотя бы 1 раз запустить ваше приложение. Из-за этого сообщение ACTION_BOOT_COMPLETED не будет отправлено в ваше приложение.
Не ошибки, но все же: указаны лишние, не обязательные атрибуты в теге «receiver», например («uses-permission», «enabled», «exported»):
3. Отладка ресивера в эмуляторе и на реальных устройствах.
- В терминале выполните:
Далее, чтобы отправить ACTION_BOOT_COMPLETED всем приложениям, наберите в терминале:
Или для отправки ACTION_BOOT_COMPLETED конкретному приложению наберите в терминале:
В эмуляторе: установите ваше ПО, запустив его из студии. При этом студия соберет ваш проект, установит приложение и запустит его. После этого закройте эмулятор (это аналогично выключению на реальном устройстве). Чтобы получить сообщение ACTION_BOOT_COMPLETED, запустите эмулятор из AVD-менеджера, а не с помощью кнопки «Run app» в тулбаре студии.
После запуска эмулятора во вкладке Android Monitor укажите запущенный эмулятор и ваше приложение, чтобы просмотреть логи logcat.
Итоги
Чтобы ваше приложение запускалось при загрузке на всех устройствах, манифест как минимум должен выглядеть так:
Код ресивера, как правило, будет таким:
Надеюсь, эта статья поможет новичкам побороть «коварного врага» под названием «ACTION_BOOT_COMPLETED».
Источник
Автозапуск программ на Android: что это, как работает и как настроить
Автозапуск приложений — это процесс, сопровождающийся самопроизвольной загрузкой какого-либо приложения, либо одной из его частей для выполнения задач в фоновом режиме. Фоновый режим же — это активная работа процесса в закрытом состоянии. То есть, даже если вы не используете программу, она работает. Большинство программ сейчас работает в Android по такому принципу.
Чтобы было ещё понятнее, приведем пример из жизни. Например, любой знакомый вам мессенджер или клиент социальной сети может работать в фоновом режиме, регулярно проверяя наличие новых сообщений, ответов, лайков, постов и так далее. Даже если у вас будет закрыт мессенджер или клиент, вы сможете получить уведомление о том, что пришло новое сообщение. Для того чтобы клиент или мессенджер смог узнать о полученном уведомлении, ему приходится работать в фоновом режиме, постоянно проверяя наличие этих самых сообщений. Даже если экран смартфона будет выключен, а все процессы из недавно запущенных закрыты — мессенджер или клиент будет работать.
Из статьи вы узнаете
Какие программы работают в фоновом режиме?
Всего есть два типа приложений, работающих в фоновом режиме, а именно:
- С автозапуском;
- С активной работой в фоне.
Приложения с автозапуском. Активируются вместе с системой и работают в фоновом режиме всегда. К таким программам можно отнести клиенты, мессенджеры, утилиты для отображения погоды, лаунчеры, виджеты и так далее. Они никогда не выключаются и остаются в фоновом режиме.
Приложения с активной работой в фоне. Это программы, которые находятся в данном режиме только при активной работе. Например, вы начали установку любимой игры из Google Play. Сервис будет загружать файл, даже если вы в этот момент занимаетесь другими процессами на телефоне. Как только игра будет уставлена, Play Market сам выгрузится из фонового режима и не будет там появляться, пока пользователь снова не попытается что-то скачать/переустановить/обновить. К таким приложениям относятся плееры, загрузчики, торренты, браузеры и так далее.
Какие последствия от приложений, постоянно работающих в фоновом режиме?
Если у вас будет работать несколько программ в таком режиме, то это нормально. При этом вполне допустимая практика, что запущены именно те процессы, которые, казалось бы, не нужны сейчас вовсе. Например, не стоит выгружать браузер из оперативной памяти, так как он не создает высокой нагрузки на систему, но при этом каждый его запуск не будет «забивать» процессор, а лишь выгрузится из оперативной памяти. Также не стоит убирать из автозапуска сервисы Google, приложения-лаунчеры, виджеты, мессенджеры и прочие программы с push уведомлениями.
Количество процессов, допустимых для работы в фоновом режиме, вычисляется непосредственно из количества оперативной памяти и их «прожорливости». Например, если у вас 4GB оперативной памяти, для вас вполне нормальным будет загрузка её на 1GB. Если же будет свободен только 1GB, то, однозначно, стоит выключить несколько программ из автозагрузки.
Чтобы вычислить норму для вашего аппарата, воспользуйтесь простой формулой: посмотрите сколько у вас приложений работает в фоновом режиме. Все эти утилиты показаны в настройках, в разделе «Память» и отображаются как работающие процессы. Если их много, но все они занимают где-то 10-40 MB, то большого вреда они не нанесут. Зачастую такие приложения висят в автозапуске для более быстрого старта, для поиска обновлений, отправки анонимной статистики, попытке получить новые уведомления и так далее.
Если в фоне висит приложение, которое очень часто используется, и оно занимает мизерное количество оперативной памяти – не трогайте его. Но если очень редко его запускаете, а оно все равно висит в активных задачах – смело отключайте.
Особое внимание обратите на программы, занимающие от 10% оперативной памяти. Их стоит по максимуму отключать. Но если среди них есть необходимые вам мессенджеры, сервисы Google и прочие важные процессы, то их лучше оставить. Аналогия проста: если часто пользуетесь утилитой или программой, то не стоит их отключать. Вполне нормально, когда в фоне работает около 10 приложений, из которых 5 вовсе не используется так часто.
Как отключить приложение из автозапуска?
Чисто технически отключить приложение из автозапуска нельзя. Но можно ограничить его работу в фоне. Для этого выполните действия, описанные ниже.
Инструкция для Android 8, 9, 10 и выше
- Зайдите в «Настройки» смартфона и найдите пункт «Приложения и уведомления», откройте его.
Откройте список всех приложений, кликнув по вкладке «Сведения о приложениях».
Откройте приложение, которое по вашему мнению нужно выключить в фоновом режиме, то есть, убрать из автозагрузки. Для более удобного поиска можно воспользоваться алфавитным ползунком слева или поиском вверху справа.
Открыв программу, в ней кликните по вкладке «Батарея».
В пункте «Батарея» найдите ползунок «Работа в фоновом режиме» и выключите его. Также рекомендуем перейти в пункт «Батарея» и установить статус приложения на «Экономить заряд батареи».
Таким образом можно легко отключать приложения из автозапуска, просто выключая их работу в фоновом режиме.
Андроид – продуманная операционная система, поэтому она сама распознает процессы и программы, которые могут работать в фоне и позволяет отключать это. А если приложение не может работать в данном режиме и автоматически запускаться, этого ползунка не будет предусмотрено изначально.
Инструкция для Android 7 и ниже
Если у вас более старая версия, то вам стоит выполнить ряд следующих действий. Они также могут быть полезны и для Android Oreo версий:
- Зайдите в «Настройки» смартфона и найдите пункт «О телефоне» или «Система» в самом низу списка.
Нажмите на пункт «Номер сборки» несколько раз, пока не появится вкладка «Для разработчиков». Затем вернитесь на главный экран настроек и откройте там пункт «Для разработчиков».
В этом пункте найдите вкладку «Неактивные приложения» и через нее легко отключайте активные процессы.
Использование All-In-One Toolbox
Это многофункциональное приложение, основная задача которого — оптимизация работы операционной системы Андроид. Среди доступных инструментов предоставляется возможность остановить автозагрузку некоторых системных и большинства пользовательских приложений.
- Установите All-In-One Toolbox из официального магазина с помощью представленной ниже кнопки.
Источник
Как отключить автозапуск приложений на Андроид
Как и в любой другой операционной системе, на Андроид есть программы, работающие в фоновом режиме. Они запускаются автоматически при включении смартфона. Большинство этих процессов необходимы для работы системы и являются ее частью. Однако иногда обнаруживаются такие приложения, которые потребляют слишком много оперативной памяти системы и энергии батареи. В этом случае понадобится самостоятельно приложить усилия, чтобы улучшить производительность и сэкономить заряд батареи.
Отключаем автозапуск приложений на Android
Для того чтобы отключить автозапуск ПО на смартфоне, можно воспользоваться сторонним приложением, отключить процессы вручную или полностью удалить программу с устройства. Разберемся, как это сделать.
Будьте предельно осторожны, останавливая работающие процессы или удаляя приложения, так как это может привести к сбоям в работе системы. Отключайте только те программы, в которых уверены на 100%. Такие инструменты, как будильник, календарь, навигатор, почта, напоминания и другие должны работать в фоновом режиме, чтобы выполнять свою функцию.
Способ 1: All-In-One Toolbox
Многофункциональная программа, с помощью которой можно оптимизировать работу системы путем избавления от ненужных файлов, экономии заряда батареи, а также отключения автозапуска приложений.
- Скачайте и запустите приложение. Откройте доступ к файлам, нажав «Разрешить».
Проведите по экрану пальцем вверх, чтобы увидеть нижнюю часть страницы. Зайдите в раздел «Автозагрузка».
Этот способ хотя и простой, но не слишком надежный, так как без рут-прав некоторые приложения всё равно будут запускаться. Вы можете использовать его в сочетании с другими методами, описанными в статье. Если в вашем телефоне есть рут-доступ, управлять автозапуском можно при помощи программы Autorun Manager.
Способ 2: Greenify
Этот инструмент позволяет анализировать работу приложений в фоновом режиме и на время «усыплять» те из них, которыми вы не пользуетесь в данный момент. Основные преимущества: отсутствие необходимости удалять программы, которые могут понадобиться в будущем и доступность для устройств без root-прав.
- Скачайте и установите приложение. Сразу после открытия появится небольшое описание, читаем и жмем кнопку «Далее».
В следующем окне потребуется указать, есть ли на вашем устройстве root-доступ. Если вы сами не предпринимали каких-либо действий для его получения, то, скорее всего, у вас его нет. Укажите соответствующее значение или выберите «Я не уверен» и нажмите «Далее».
Поставьте галочку, если используете блокировку экрана, и нажмите «Далее».
Если выбран режим без рута или вы не уверены, есть ли рут-права на вашем устройстве, появится окно, где потребуется включить службу специальных возможностей. Нажимаем «Настройка».
В появившемся списке нажмите на приложение Гринифай.
Снова зайдите в приложение Greenify и нажмите «Далее».
Закончите настройку, прочитав предлагаемую информацию. В главном окне нажмите на плюсик в правом нижнем углу экрана.
Откроется окно анализа приложений. Одним нажатием выберите программы, которые хотите усыпить. Нажмите галочку в правом нижнем углу.
В открывшемся окне будут показаны усыплённые приложения и те, которые будут усыплены после отключения. Если вы хотите усыпить сразу все программы, нажмите кнопку «Zzz» в правом нижнем углу.
При возникновении проблем приложение уведомит вас о необходимости ввода дополнительных настроек, просто следуйте инструкциям. В настройках можно создать ярлык гибернации, позволяющий мгновенно усыплять выбранные программы одним нажатием.
Способ 3: Остановка работающих приложений вручную
Наконец, можно вручную отключить процессы, работающие в фоне. Таким образом, вы сможете увеличить производительность или проверить, как повлияет удаление той или иной программы на работу системы перед тем, как избавляться от нее.
- Зайдите в раздел настроек телефона.
Откройте список приложений.
Зайдите во вкладку «Работающие».
Выберите приложение и нажмите «Остановить».
Выбирайте только те процессы, которые не повлияют на работу системы, но если всё же что-то пошло не так, просто перезагрузите устройство. Некоторые системные процессы и службы невозможно остановить без наличия рут-прав.
Способ 4: Удаление ненужных приложений
Последняя и самая крайняя мера противодействия назойливым программам. Если в списке работающих приложений вы обнаружили такие, которыми не пользуетесь ни вы, ни система, можете их удалить.
- Для этого зайдите в «Настройки» и откройте список приложений, как описано выше. Выберите программу и нажмите «Удалить».
Появится предупреждение – нажмите «ОК», чтобы подтвердить действие.
Конечно, чтобы удалить предустановленные или системные приложения, вам понадобятся рут-права, но прежде чем получать их, тщательно взвесьте все «за» и «против».
Получение рут-прав влечет за собой потерю гарантии на устройство, прекращение автоматических обновлений прошивки, риск потерять все данные с дальнейшей необходимостью перепрошивки, возложение на пользователя полной ответственности за безопасность устройства.
Последние версии Android достаточно успешно справляются с фоновыми процессами, и если у вас установлены качественные, хорошо проработанные приложения, то беспокоиться не о чем. Удаляйте только те программы, которые перегружают систему, требуя слишком много ресурсов вследствие ошибок разработки.
Помимо этой статьи, на сайте еще 12473 инструкций.
Добавьте сайт Lumpics.ru в закладки (CTRL+D) и мы точно еще пригодимся вам.
Отблагодарите автора, поделитесь статьей в социальных сетях.
Источник