Что такое фоновый режим в телефоне Андроид — как убрать


Что такое фоновый режим в телефоне Андроид

Фоновая работа – полезная особенность ОС Андроид

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

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

Некоторые примеры не такие положительные. В ОС Андроид есть множество предустановленных сервисов Гугл, которые активничают даже тогда, когда человек не пользуется ими. Они способны «съедать» приличную часть системных ресурсов при фоновой работе, использовать лимитированный интернет-трафик при загрузке обновлений и так далее. Самое плохое, что удалить их без наличия рут прав не получится. Их можно только отключить.

Для чего это нужно

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

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

Картинка 2 Мониторинг процессов, работающих в фоновом режиме

Чем отличается от фоновой передача данных

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

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

Руководство по фоновой работе в Android. Часть 1

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

Будет несколько частей:

  1. Основной поток, осуществление фоновой работы с помощью AsyncTask, публикация результатов в основном потоке.
  2. Затруднения при использовании AsyncTask. Loaders как один из способов их избежать.
  3. Работа в фоне с помощью ThreadPools и EventBus.
  4. RxJava 2 как метод асинхронной работы.
  5. Корутины в Kotlin как метод асинхронной работы.

Начнем с первой части.

Первое, что следует понять, – почему мы вообще беспокоимся о работе в фоне в мобильных приложениях.

Во всех приложениях для Android есть хотя бы один поток, на котором происходит прорисовка UI и обработка пользовательского ввода. Поэтому он и называется потоком UI или главным потоком.

Каждый метод жизненного цикла каждого компонента вашего приложения, включая Activity, Service и BroadcastReceiver, исполняется на UI-потоке.

Человеческий глаз преобразовывает сменяющиеся изображения в плавное видео, если частота смены достигает 60 кадров в секунду (да, это магическое число берется отсюда), давая основному потоку только 16 мc для прорисовки всего экрана.

Продолжительность сетевого вызова может быть в тысячи раз больше.

Когда мы хотим загрузить что-либо из Интернета (прогноз погоды, пробки, сколько стоит ваша часть биткоина в данный момент), мы не должны делать это из главного потока. Более того, Android не позволит нам, выбросив NetworkOnMainThreadException.

Семь лет назад, когда я разрабатывал свои первые приложения на Android, подход от Google был ограничен использованием AsyncTasks. Давайте посмотрим, как мы писали код для общения с сервером (псевдокод преимущественно):

public class LoadWeatherForecastTask extends AsyncTask { public Forecast doInBackground(String… params) { HttpClient client = new HttpClient(); HttpGet request = new HttpRequest(params[0]); HttpResponse response = client.execute(request); return parse(response); } }

Метод doInBackground() гарантированно будет вызван не на основном потоке. Но на каком? Зависит от реализации. Вот как Android выбирает поток (это часть исходного кода класса AsyncTask):

@MainThread public final AsyncTask executeOnExecutor(Executor exec, Params… params) { … mStatus = Status.RUNNING; onPreExecute(); mWorker.mParams = params; exec.execute(mFuture); // <— mFuture contains a Runnable with our doInBackgroundMethod return this; }

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

public static final Executor SERIAL_EXECUTOR = new SerialExecutor(); … private static volatile Executor sDefaultExecutor = SERIAL_EXECUTOR; … @MainThread public final AsyncTask execute(Params… params) { return executeOnExecutor(sDefaultExecutor, params); }

Как здесь указано, по умолчанию executor ссылается на пул потоков размера 1. Это означает, что все AsyncTasks в вашем приложении запускаются последовательно. Это не всегда было верно, так как для версий ОС от DONUT до HONEYCOMB использовался пул размером от 2 до 4(в зависимости от количества ядер процессора). После HONEYCOMB AsyncTasks снова выполняются последовательно по умолчанию.

Итак, работа выполнена, байты закончили свое длинное путешествие с другого полушария. Нужно превратить их во что-то понятное и разместить на экране. К счастью, наша Activity тут как тут. Давайте поместим результат в одно из наших View.

public class LoadWeatherForecastTask extends AsyncTask { public Forecast doInBackground(String… params) { HttpClient client = new HttpClient(); … Forecast forecast = parse(response); mTemperatureView.setText(forecast.getTemp()); } }

О, черт! Опять исключение!

android.view.ViewRoot$CalledFromWrongThreadException: Only the original thread that created a view hierarchy can touch its views.

Но мы не делали никаких сетевых обращений на основном потоке! Правильно, но мы попытались нарушить другой закон UI. Пользовательский интерфейс можно менять только из UI-потока. Это верно не только для Android, но и практически для любой системы, с которой вы столкнетесь. Причину этого хорошо объяснили в Java Concurrency In Practice. Вкратце – архитекторы хотели избежать сложной блокировки при изменениях из нескольких источников (пользовательский ввод, биндинг и другие изменения). Использование единственного потока решает эту проблему.

Да, но UI все равно нужно обновлять. У AsyncTask есть еще метод onPostExecute, который вызывается на UI-потоке:

public void onPostExecutre(Forecast forecast) { mTemperatureView.setText(forecast.getTemp()); }

Как эта магия работает? Посмотрим в исходном коде AsyncTask:

private void finish(Result result) { if (isCancelled()) { onCancelled(result); } else { onPostExecute(result); } mStatus = Status.FINISHED; } private static class InternalHandler extends Handler { public InternalHandler(Looper looper) { super(looper); } @Override public void handleMessage(Message msg) { AsyncTaskResult result = (AsyncTaskResult ) msg.obj; switch (msg.what) { case MESSAGE_POST_RESULT: // There is only one result result.mTask.finish(result.mData[0]); break; } } }

AsyncTask использует Handler для вызова onPostExecute в UI, ровно как и метод postOnUiThread в компонентах Android.

Handler прячет всю внутреннюю кухню. Какую именно? Идея состоит в том, чтобы иметь бесконечный цикл проверки сообщений, приходящих на UI-поток, и обрабатывать их соответствующе. Велосипедов тут никто не изобретает, хотя без кручения педалей не обошлось.

Для Android это реализовано классом Looper, который передается в InternalHandler в приведенном выше коде. Суть класса Looper находится в методе loop:

public static void loop() { … for (;;) { Message msg = queue.next(); …. msg.target.dispatchMessage(msg); } … }

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

public static Looper getMainLooper()

Кстати, вы только что узнали, как проверить, вызывается ли ваш код в UI-потоке:

if (Looper.myLooper() === Looper.getMainLooper()) { // we are on the main thread }

Если вы попытаетесь создать экземпляр Handler в методе doInBackground, то получите другое исключение. Оно сообщит о необходимости наличия Looper для потока. Теперь вы знаете, что это значит.

Надо заметить, что AsyncTask может быть создан только в UI-потоке по указанным выше причинам. Вы можете подумать, что AsyncTask – это удобный способ выполнения фоновой работы, так как он скрывает сложность и требует немного усилий при использовании, но есть несколько проблем, которые приходится решать по пути:

  • Каждый раз нужно писать достаточно много кода для решения относительно простой задачи
  • AsyncTasks ничего не знают о жизненном цикле. При неправильном обращении лучшее, что вы получите — утечка памяти, в худшем – сбой
  • AsyncTask не поддерживает сохранение состояния прогресса и повторное использование результатов загрузки.

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

Как работает фоновый режим на Андроиде

Как убрать родительский контроль на телефоне андроид

Фоновый режим работает по аналогии с компьютерной версией этой технологии, ведь изначально он появился на десктопных операционных системах и лишь потом перекочевал на мобильные платформы по типу Андроид, iOS или Windows Mobile.

Принцип его действия заключается в запуске программ в скрытом режиме, при котором они не мешают пользователю и не влияют на общую производительность системы, но при этом активно продолжают выполнять свои специфические функции:

  • Обновление ОС и программ.
  • Связь с сервером для обновления данных на виджетах.
  • Оповещение человека о новых СМС-сообщениях или новостях в мессенджерах или социальных сетях и так далее.

Всего у приложений на телефоне под управлением ОС Андроид есть несколько состояний работы:

  • Активное. Приложение активно работает.
  • Неактивное. Программа была запущена и на данный момент находится в фоновом режиме, но не выполняет каких-либо действий из-за перехода девайса в режима сна и т.д.
  • Фоновое. Окна программы не на текущем экране, но оно все еще работает в свернутом виде.
  • Остановленное. Приложение не выполняет свои функции, но находится в памяти устройства.
  • Незапущенное. Программа была удалена из списка активно выполняющегося ПО или не была запущена вообще.

Картинка 3 Запрет на использование фона

Как включить фоновый режим приложений на iPhone?

Теперь несколько слов о «яблочных» мобильных гаджетах. Фоновый режим включить в них тоже можно. Для примера возьмем iPhone (хотя по большому счету без разницы, какое устройство будет использоваться).

Сначала нужно скачать небольшую бесплатную утилиту под названием Backgrounder (сделать это можно на компьютере через сервис Sydia, поскольку в «родном» хранилище этого приложения нет). Далее следует загрузить инсталлятор на устройство через iTunes и установить программу. Желательно создать нужный каталог вручную, скопировать в него инсталляционный файл и установить приложение туда же.

Обратите внимание: после установки иконка приложения в списке апплетов создана не будет, поэтому искать ее среди инсталлированных программ не имеет смысла. Кроме того, в файловом менеджере категорически запрещается удалять или перемещать папку установки, поскольку после этого приложение системой распознано не будет.

Что касается включения фонового режима, тут все просто. При запуске какой-то программы, когда она полностью откроется, нужно нажать на кнопку Home и удерживать ее в течение примерно 3 секунд. После этого появится сообщение об активации утилиты Backgrounder, и приложение свернется. Для восстановления исходного состояния программы снова используется та же кнопка с удерживанием, но после этого появляется сообщение о деактивации утилиты, за чем последует выход приложения из фонового режима.

Включение и отключение фонового режима на Андроиде

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

LTE — что это такое в телефоне андроид, как пользоваться

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

  1. Переходят в параметры своего телефона.
  2. Выбирают раздел «Беспроводные сети» или «Мобильный интернет».
  3. Находят пункт «Передача данных» и параметр «Предупреждения и лимит».
  4. Устанавливают определенные предупреждения, когда софт тратит больше трафика, чем он должен и ограничивают потребление интернета в случае исчерпания лимита.

Способы сократить количество активных пользовательских процессов через инженерное меню

«Убить» некоторые процессы, работающие на фоне, через инженерное меню – крайне неудобно. Некоторые варианты для процессоров MTK вообще не предоставляют такой возможности, поэтому рекомендуется пользоваться специальными приложениями или самостоятельно чистить автозагрузку.

Очистка автозагрузки

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

Одна из них – All-In-One Toolbox, позволяющая ускорить девайс за счет удаления ненужных приложений, который сильно тормозят ОС при загрузке телефона. Это также избавляет от фоновых процессов, которыми сопровождается запуск приложений в авторазгрузке.

Важно! То же самое можно проделать и вручную, но придется удалять программы или останавливать их активность для каждой отдельно. Для этого переходят в настройки, находят раздел с ПО и останавливают часть запущенных приложений.

Картинка 4 Остановка программы позволяет убрать ее из автозапуска

Как запретить Xiaomi и Android завершать программы в фоновом режиме?

Выберите следующие параметры: энергосбережение в фоновом режиме

> выберите приложения > выберите приложение > настройки фона > без ограничений (Choose the next options: Saving Power in The
Background
> Choose apps > select your app >
Background
Settings > No restrictions)

Интересные материалы:

Как очистить галерею на андроид? Как очистить историю блютуз на андроиде? Как очистить историю клавиатуры андроид? Как очистить историю клавиатуры на андроиде? Как очистить историю на планшете андроид? Как очистить историю в хроме на андроид? Как очистить календарь на андроид? Как очистить карту памяти на андроид? Как очистить кэш браузера Опера на Андроиде? Как очистить кэш и куки на андроиде?

Как посмотреть список процессов, работающих в фоне на Андроиде

Что такое кэш в телефоне андроид — подробная информация

Для того чтобы ознакомиться со списком активных и работающих на фоне приложений, необходимо скачать программу Greenify или вышеописанное решение (All-In-One Toolbox). Сразу же после входа перед человек появляются все активные процессы с возможностью их отключения и «усыпления».

Если скачивать стороннее ПО не хочется, то можно воспользоваться стандартным решением:

  1. Перейти в параметры устройства.
  2. Найти раздел «Приложения».
  3. Выбрать вкладку «Активные».
  4. Просмотреть список и по желанию удалить некоторый софт из памяти путем его остановки.

Картинка 5 Интерфейс Greenify

Преимущества и недостатки фоновой работы приложений на Android

Если говорить о преимуществах работы на фоне, то стоит выделить следующие:

  • Частичная автоматизация выполняемых процессов обновления ПО или уведомления человека, которые не требуют его вмешательства.
  • Рост функциональности мобильного аппарата и операционной системы.
  • Расширение функции мультизадачности, когда девайс выполняет сразу несколько процедур.

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

Картинка 6 Работа в All-In-One Toolbox

Режим предприятия на Xiaomi (Redmi), что это и для каких целей используется

Обсуждение: 4 комментария

  1. ndaa:
    27.10.2020 в 22:09

    Не помогло. Всё равно уведомления не приходят при темной экране. Только при включенном приходят. Речь про приложение mail.ru на xiaomi miui 11

    Ответить

  2. Аноним:

    27.10.2020 в 22:44

    1. Удалите или отключите приложение Cleaner (желтая пиктограмма) 2. цитирую: “Для нормальной работы уведомлений, в некоторых приложениях должна быть включена синхронизация! Например, без синхронизации не работают уведомления для gmail! Так же не забывайте, что синхронизация у вас может быть включена ТОЛЬКО для Wi-Fi, в таком случае эти приложения могут не работать на мобильном инете. Настройки – Синхронизация – Только Wi-Fi – выключить”

    Ответить

  3. Валерий:

    14.09.2021 в 18:14

    Какого года эта инструкция? На Readmi 8 в меню “Безопасность” нет таких значков, как “Передача данных” и “Питание и производительность”

    Ответить

    MiMaster:

    02.11.2021 в 09:13

    Добрый день, эти настройки, как я понял из множества комментариев на сайте, зависят от прошивки и модели телефона. На моём Mi 9 SE они есть и в самой новой прошивке 12.5.1.0. Вероятно, вам придётся пропустить эти настройки, или попробовать найти их иным путём, где-то в настройках MIUI. Извините, у меня нет сейчас на руках телефона Redmi, не смогу дать вам более точный ответ.

    Ответить

Какие фоновые процессы на Android нельзя останавливать

Если руководствоваться принципом, что остановить следует те приложения, которые тратят самый большой процент зарядки аккумуляторной батареи и те, которые занимают больше всего ОЗУ, то это порой может привести не туда. Все дело в том, что наибольшее количество ресурсов и зарядки тратит сама операционная система и ее компоненты. Остальное распределяется между системными и пользовательскими приложениями.

Начинать нужно с программ, в названии которых есть слово «Google». Делать это нужно спокойно и без фанатизма, хотя сколько-нибудь действительно важные сервисы и службы просто не дадут себя закрыть и остановить. Не стоит закрывать и такие программы: Google Search, Google Play services, Google Contacts Sync, Google Keyboard, Google Play Store. Все остальное, если человек этим не пользуется, может быть остановлено. Руководствоваться при этом нужно списком статистики использования системных ресурсов и энергопотребления.

Картинка 7 Анализ траты системных ресурсов

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

Доступ в интернет в фоновом режиме

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

Для этого запустите системное приложение «Безопасность» на Xiaomi.

Найдите пункт
«Передача данных». Выберите «Сетевые подключения». Теперь нажмите на «Три точки» и в появившемся меню «Фоновые подключения». Отключите доступ для тех программ, которые вы хотите ограничить в интернете, если они не активны в данный момент. Это не только сохранит трафик, но и поможет снизить расход батареи и увеличить автономность смартфона.
Не стоит отключать доступ всем программам без разбора, некоторым он необходим для адекватной работы. Если после ограничения доступа вы заметили, что какая-то программа стала работать плохо, или вообще перестала, доступ придётся вернуть.

Вернуться к содержанию

Рейтинг
( 1 оценка, среднее 4 из 5 )
Понравилась статья? Поделиться с друзьями:
Для любых предложений по сайту: [email protected]