Android studio автозапуск приложения. Автозапуск приложения при загрузке

Полный список

В этом уроке:

– изучаем IntentService
– включаем режим Foreground для сервиса
– помещаем сервис в автозагрузку

Строили мы, строили, и, в конце концов, выстроили. Урок номер 100, с чем всех нас и поздравляю )

В этом уроке разглядим еще несколько нужных вещей про сервисы. Выносить каждую из их в отдельный урок я не стал, полностью можно в одном все разглядеть. Проекты тут тоже создавать не будем, чтоб урок не вышел очень массивным. Я просто приведу некие кусочки кода и скрины для наглядности собственных рассуждений. А ежели у вас будет желание, вы по сиим наработкам сами сможете сделать проекты-примеры.

IntentService

Это подкласс обыденного Service. Он употребляется, ежели для вас в сервисе нужно делать какие-то томные задачки, и вы не желаете сами возиться с асинхронностью. Принцип работы этого вида сервиса прост. Он делает новейший поток для собственной работы. Потом берет все Intent пришедшие ему в onStartCommand и посылает их на обработку в этот поток. Как конкретно обрабатываются Intent – зависит от нас, т.к. мы сами кодим это в способе onHandleIntent.

Т.е. приложение сыпет в сервис вызовами startService, в которых передает Intent-ы. IntentService воспринимает эти вызовы в onStartCommand, берет Intent-ы и посылает их в очередь на обработку. И дальше они попеременно обрабатываются в отдельном потоке способом onHandleIntent. Когда крайний Intent из очереди обработан, сервис сам завершает свою работу.

Пример

В приложении делаем три вызова:

startService(intent.putExtra(“time”, 3).putExtra(“label”, “Call 1”) ); startService(intent.putExtra(“time”, 1).putExtra(“label”, “Call 2”) ); startService(intent.putExtra(“time”, 4).putExtra(“label”, “Call 3”) );

Где time – это время паузы, которую будем делать в сервисе, а label – просто метка, чтоб различать вызовы.

Код сервиса:

public class MyService extends IntentService { final String LOG_TAG = “myLogs”; public MyService() { super(“myname”); } public void onCreate() { super.onCreate(); Log.d(LOG_TAG, “onCreate”); } @Override protected void onHandleIntent(Intent intent) { int tm = intent.getIntExtra(“time”, 0); String label = intent.getStringExtra(“label”); Log.d(LOG_TAG, “onHandleIntent start ” + label); try { TimeUnit.SECONDS.sleep(tm); } catch (InterruptedException e) { e.printStackTrace(); } Log.d(LOG_TAG, “onHandleIntent end ” + label); } public void onDestroy() { super.onDestroy(); Log.d(LOG_TAG, “onDestroy”); } }

Здесь нужен конструктор, в котором вызываем конструктор супер-класса и указываем какое-нить имя. Оно будет применено для наименования потока.

В способе onHandleIntent кодим обработку Intent-ов. Достаем из их time и label, запускаем паузу на time секунд и выводим в лог label в начале и в конце.

В итоге, при запуске в логах видим:

11:07:37.880: D/myLogs(4137): onCreate
11:07:37.880: D/myLogs(4137): onHandleIntent start Call 1
11:07:40.880: D/myLogs(4137): onHandleIntent end Call 1
11:07:40.880: D/myLogs(4137): onHandleIntent start Call 2
11:07:41.880: D/myLogs(4137): onHandleIntent end Call 2
11:07:41.880: D/myLogs(4137): onHandleIntent start Call 3
11:07:45.890: D/myLogs(4137): onHandleIntent end Call 3
11:07:45.890: D/myLogs(4137): onDestroy

Сервис создался, вызовы выполнились по очереди и сервис завершил работу. От нас пригодилось лишь накодить обработку.

Foreground

Вы сможете огласить системе, что ваш сервис чрезвычайно важен для юзера и его нельзя грохать при нехватке памяти. Это актуально, к примеру, для музыкального проигрывателя. В статус-бар при этом будет помещено уведомление.

Читайте также  Как отвязать в стиме номер телефона. Как привязать номер телефона к Стиму: инструкция

Делается это способом startForeground (int id, Notification notification).

На вход он воспринимает те же характеристики, что и NotificationManager.notify – ID и Notification.

Т.е. вы создаете уведомление, назначаете ему ID и передаете это в startForeground. Сервис перебегает в режим IDDQD :), а в статус-баре возникло уведомление.

Android studio автозапуск приложения. Автозапуск приложения при загрузке

Оно возникло в разделе для неизменных уведомлений (Ongoing). 

Метод stopForeground (boolean removeNotification)  – возвращает сервису способность быть убитым системой в случае острой нехватки памяти. А на вход он воспринимает boolean-значение – удалять уведомление из статус-бара либо нет.

Уведомление также пропадет, когда сервис будет остановлен.

Эти способы работают, начиная с Android 2.0.  Пример реализации для наиболее ранешних версий есть в хелпе.

Напомню, что уведомления мы научились создавать на прошедшем уроке.

Автозагрузка

Сервисы для получения погоды либо почты имеет смысл помещать в автозагрузку. Для этого нам нужно сделать BroadcastReceiver, настроить его IntentFilter на Action = android.intent.action.BOOT_COMPLETED, и добавить права android.permission.RECEIVE_BOOT_COMPLETED. Этот BroadcastReceiver будет вызван системой при старте системы и в нем мы кодим пуск сервиса.

Допустим, есть проект с обслуживанием MyService.

Создаем в проекте класс MyBroadReceiv

public class MyBroadReceiv extends BroadcastReceiver { final String LOG_TAG = “myLogs”; public void onReceive(Context context, Intent intent) { Log.d(LOG_TAG, “onReceive ” + intent.getAction()); context.startService(new Intent(context, MyService.class)); } }

В манифесте добавляем его как Receiver и настраиваем фильтр

Android studio автозапуск приложения. Автозапуск приложения при загрузке

Добавляем права на получение сообщения о загрузке

Android studio автозапуск приложения. Автозапуск приложения при загрузке

Инсталлим проект на AVD. Закрываем AVD. Запускаем через меню в Eclipse: Window > AVD Manager. Находим там наш эмулятор и запускаем вручную.

Когда он запустился, смотрим логи

onReceive android.intent.action.BOOT_COMPLETED
MyService onCreate
MyService onStartCommand

Сработал BroadcastReceiver и запустил сервис.

Если опосля пуска AVD логи не показываются, то откройте DDMS и во вкладке Devices очевидно выберите ваш AVD.

P.S. Я уже писал о этом, но напишу еще раз. Следующие уроки будут выходить по наиболее вольному графику. Смотрите за обновлениями.

На последующем уроке:

– создаем собственный ContentProvider


Присоединяйтесь к нам в Telegram:

– в канале StartAndroid публикуются ссылки на новейшие статьи с веб-сайта startandroid.ru и достойные внимания материалы с хабра, medium.com и т.п.

– в чатах решаем возникающие вопросцы и трудности по разным темам: Android, Kotlin, RxJava, Dagger, Тестирование

– ну и ежели просто охото побеседовать с сотрудниками по разработке, то есть чат Флудильня

– новый чат Performance для обсуждения заморочек производительности и для ваших пожеланий по содержанию курса по данной для нас теме 


Автозапуск программ на Android: что это, как работает и как настроить

Автозапуск приложений — это процесс, сопровождающийся самопроизвольной загрузкой какого-нибудь приложения, или одной из его частей для выполнения задач в фоновом режиме. Фоновый режим же — это активная работа процесса в закрытом состоянии. То есть, даже ежели вы не используете програмку, она работает. Большая часть программ на данный момент работает в Android по такому принципу.

Чтобы было ещё понятнее, приведем пример из жизни. К примеру, хоть какой знакомый для вас мессенджер либо клиент социальной сети может работать в фоновом режиме, часто проверяя наличие новейших сообщений, ответов, лайков, постов и так дальше. Даже ежели у вас будет закрыт мессенджер либо клиент, вы можете получить уведомление о том, что пришло новое сообщение. Для того чтоб клиент либо мессенджер сумел выяснить о приобретенном уведомлении, ему приходится работать в фоновом режиме, повсевременно проверяя наличие этих самых сообщений. Даже ежели экран телефона будет выключен, а все процессы из не так давно запущенных закрыты — мессенджер либо клиент будет работать.

Читайте также  Невозможно установить windows в раздел. Установка Windows на данный диск невозможна — что делать?

Из статьи вы узнаете

Какие программы работают в фоновом режиме?

Всего есть два типа приложений, работающих в фоновом режиме, а именно:

  1. С автозапуском;
  2. С активной работой в фоне.

Приложения с автозапуском. Активизируются совместно с системой и работают в фоновом режиме постоянно. К таковым програмкам можно отнести клиенты, мессенджеры, утилиты для отображения погоды, лаунчеры, виджеты и так дальше. Они никогда не выключаются и остаются в фоновом режиме.

Приложения с активной работой в фоне. Это программы, которые находятся в данном режиме лишь при активной работе. К примеру, вы начали установку возлюбленной игры из Google Play. Сервис будет загружать файл, даже ежели вы в этот момент занимаетесь иными действиями на телефоне. Как лишь игра будет уставлена, Play Market сам выгрузится из фонового режима и не будет там появляться, пока юзер опять не попробует что-то скачать/переустановить/обновить. К таковым приложениям относятся плееры, загрузчики, торренты, браузеры и так далее.

Какие последствия от приложений, повсевременно работающих в фоновом режиме?

Если у вас будет работать несколько программ в таком режиме, то это нормально. При этом полностью допустимая практика, что запущены конкретно те процессы, которые, казалось бы, не необходимы на данный момент совсем. К примеру, не стоит выгружать браузер из оперативной памяти, так как он не делает высочайшей перегрузки на систему, но при этом каждый его пуск не будет «забивать» процессор, а только выгрузится из оперативной памяти. Также не стоит убирать из автозапуска сервисы Google, приложения-лаунчеры, виджеты, мессенджеры и остальные программы с push уведомлениями.

Количество действий, допустимых для работы в фоновом режиме, рассчитывается конкретно из количества оперативной памяти и их «прожорливости». К примеру, ежели у вас 4GB оперативной памяти, для вас полностью обычным будет загрузка её на 1GB. Ежели же будет волен лишь 1GB, то, однозначно, стоит выключить несколько программ из автозагрузки.

Чтобы вычислить норму для вашего аппарата, воспользуйтесь обычной формулой: поглядите сколько у вас приложений работает в фоновом режиме. Все эти утилиты показаны в настройках, в разделе «Память» и показываются как работающие процессы. Ежели их много, но все они занимают кое-где 10-40 MB, то огромного вреда они не нанесут. Часто такие приложения висят в автозапуске для наиболее скорого старта, для поиска обновлений, отправки анонимной статистики, попытке получить новейшие уведомления и так далее.

Если в фоне висит приложение, которое чрезвычайно нередко употребляется, и оно занимает мизерное количество оперативной памяти – не трогайте его. Но ежели чрезвычайно изредка его запускаете, а оно все равно висит в активных задачках – смело отключайте.

Особое внимание обратите на программы, занимающие от 10% оперативной памяти. Их стоит по максимуму отключать. Но ежели посреди их есть нужные для вас мессенджеры, сервисы Google и остальные принципиальные процессы, то их лучше бросить. Аналогия проста: ежели нередко пользуетесь утилитой либо програмкой, то не стоит их отключать. Полностью нормально, когда в фоне работает около 10 приложений, из которых 5 совсем не употребляется так часто.

Читайте также  Программы для автоматической установки программ на компьютер

Как отключить приложение из автозапуска?

Чисто технически отключить приложение из автозапуска нельзя. Но можно ограничить его работу в фоне. Для этого выполните деяния, описанные ниже.

Инструкция для Android 8, 9, 10 и выше

  1. Зайдите в «Настройки» телефона и найдите пункт «Приложения и уведомления», откройте его.
  2. Android studio автозапуск приложения. Автозапуск приложения при загрузке

  3. Откройте перечень всех приложений, кликнув по вкладке «Сведения о приложениях».
  4. Android studio автозапуск приложения. Автозапуск приложения при загрузке

  5. Откройте приложение, которое по вашему мнению необходимо выключить в фоновом режиме, то есть, убрать из автозагрузки. Для наиболее комфортного поиска можно пользоваться алфавитным ползунком слева либо поиском вверху справа.
  6. Android studio автозапуск приложения. Автозапуск приложения при загрузке

  7. Открыв програмку, в ней кликните по вкладке «Батарея».
  8. Android studio автозапуск приложения. Автозапуск приложения при загрузке

  9. В пт «Батарея» найдите ползунок «Работа в фоновом режиме» и выключите его. Также советуем перейти в пункт «Батарея» и установить статус приложения на «Экономить заряд батареи».
  10. Android studio автозапуск приложения. Автозапуск приложения при загрузке

Таким образом можно просто отключать приложения из автозапуска, просто выключая их работу в фоновом режиме.

Андроид – обмысленная операционная система, потому она сама распознает процессы и программы, которые могут работать в фоне и дозволяет отключать это. А ежели приложение не может работать в данном режиме и автоматом запускаться, этого ползунка не будет предвидено изначально.

Инструкция для Android 7 и ниже

Если у вас наиболее древняя версия, то для вас стоит выполнить ряд последующих действий. Они также могут быть полезны и для Android Oreo версий:

  1. Зайдите в «Настройки» телефона и найдите пункт «О телефоне» либо «Система» в самом низу списка.
  2. Android studio автозапуск приложения. Автозапуск приложения при загрузке

  3. Нажмите на пункт «Номер сборки» несколько раз, пока не покажется вкладка «Для разработчиков». Потом вернитесь на основной экран опций и откройте там пункт «Для разработчиков».
  4. Android studio автозапуск приложения. Автозапуск приложения при загрузке

  5. В этом пт найдите вкладку «Неактивные приложения» и через нее просто отключайте активные процессы.
  6. Android studio автозапуск приложения. Автозапуск приложения при загрузке

Использование All-In-One Toolbox

Это многофункциональное приложение, основная задачка которого — оптимизация работы операционной системы Дроид. Посреди доступных инструментов предоставляется возможность приостановить автозагрузку неких системных и большинства пользовательских приложений.

  1. Установите All-In-One Toolbox из официального магазина с помощью представленной ниже кнопки.
  2. После первого пуска нужно предоставить доступ к мультимедиа и остальным файлам в памяти устройства. Для этого нажмите клавишу «Разрешить».
  3. Android studio автозапуск приложения. Автозапуск приложения при загрузке

  4. Опуститесь в нижнюю часть странички и откройте раздел «Автозагрузка». Тут можно отключить автозапуск для избранных приложений для скорого старта устройства.
  5. Android studio автозапуск приложения. Автозапуск приложения при загрузке

  6. Вы сможете исключить из автозагрузки как сходу все пользовательские и системные приложения, так и одно либо несколько конкретных.
  7. Android studio автозапуск приложения. Автозапуск приложения при загрузке

Как включить автозапуск приложения?

Некоторым юзерам требуется добавить приложение в автозагрузку. Это можно сделать с помощью постороннего инструмента «AutoStart — No root». Обычной функционал данной для нас утилиты дозволяет сделать перечень программ, которые стартуют в указанный временный интервал при запуске операционной системы Андроид.

  1. После пуска «AutoStart», нажмите клавишу «ADD».
  2. Android studio автозапуск приложения. Автозапуск приложения при загрузке

  3. В перечне доступных приложений выберите то, которое желаете включить в автозапуск.
  4. Android studio автозапуск приложения. Автозапуск приложения при загрузке

  5. В качестве примера мы избрали «MI Пульт».
  6. Android studio автозапуск приложения. Автозапуск приложения при загрузке

  7. Далее нажмите клавишу «OFF», чтоб она переключилась на «ON» напротив «Auto startup».
  8. Android studio автозапуск приложения. Автозапуск приложения при загрузке

На этом все. Таковым методом можно сделать автозагрузку хоть какого приложения.

Category: Настройка Android5 комментариев

Оставьте комментарий