Кроме того, приложение можно закрыть через раздел «Приложения» в настройках телефона. Здесь вы можете принудительно остановить каждое приложение по отдельности. Иногда этот способ является наиболее удобным.
Что такое фоновый режим и его настройка в телефоне Андроид
Смартфон — это современное устройство, которое по функциональности можно сравнить с полноценным компьютером. Более того, современные устройства способны работать в различных режимах. Каждый из них влияет на работу определенных приложений, а также на автономность устройства. Поэтому мы рекомендуем разобраться, что такое фоновый режим на телефоне Android и как им можно управлять.
Когда мы говорим о возможностях ограничения фоновых процессов, важно сначала понять, что они собой представляют. Фоновый процесс — это режим работы, в котором приложение выполняется без непосредственного вмешательства пользователя. Это означает, что для того, чтобы программа или игра работала в фоновом режиме, владельцу смартфона не нужно сначала запускать программное обеспечение.
Фоновый режим очень важен для стабильной работы смартфона. Предположим, на вашем устройстве установлен мессенджер WhatsApp. Если бы приложение не работало в фоновом режиме, вы бы не получали сообщения или звонки, пока приложение не было бы запущено. Конечно, эта опция лишает WhatsApp большей части его функциональности, и вы можете полноценно пользоваться им только в фоновом режиме.
Чем фоновые процессы отличаются от активных
Разницу между активными и фоновыми процессами можно легко проиллюстрировать на примере WhatsApp. При включении смартфона Messenger автоматически запускается в фоновом режиме, чтобы в нужный момент вывести на экран уведомление о входящем звонке или сообщении.
Но когда вы открываете полученное уведомление, чтобы прочитать текст сообщения или ответить на звонок, WhatsApp переключается в автоматический режим. Если вы решите закрыть приложение, мессенджер будет снова активирован в фоновом режиме.
Важно. После закрытия приложение продолжает работать, если на смартфоне достаточно оперативной памяти. Чтобы закрыть его навсегда, необходимо выгрузить соответствующий процесс из оперативной памяти.
Еще одно важное отличие активных процессов от фоновых — это, конечно же, их влияние на время автономной работы устройства. Приложения, работающие в фоновом режиме, расходуют заряд батареи медленнее, чем их активные аналоги. На это есть очевидные причины, но не стоит полагать, что фоновые процессы не влияют на время автономной работы.
Как контролировать эти процессы
Владелец смартфона Android имеет возможность управлять фоновыми процессами. Владелец может отключить их или включить вместо них, чтобы важное приложение работало в фоновом режиме.
Зачем это нужно делать
Хотя фоновый режим считается более оптимальным для автономной работы, он все равно оказывает негативное влияние на время автономной работы устройства. Если все приложения работают в фоновом режиме одновременно, смартфон проработает не более 6-10 часов, даже если вы ни разу не прикоснетесь к экрану.
Поэтому для пользователя чрезвычайно важно контролировать фоновые процессы. Это позволит оптимизировать работу устройства и продлить срок его службы на одной зарядке. Далее рассмотрим некоторые варианты ограничения фоновой активности.
Запрет фоновой активности
Для каждого приложения, установленного на смартфоне, можно установить лимит фоновой активности. После этого приложение больше не будет работать в фоновом режиме, но в то же время у вас могут возникнуть проблемы с отображением уведомлений. Однако стоит ограничить активность:
- Перейдите в раздел «Приложения и уведомления».
- Выберите нужное приложение.
- На вкладке Аккумулятор отключите приложение в фоновом режиме.
Приведенный выше алгоритм применим к смартфонам Samsung. Если у вас устройство другого производителя, план действий может отличаться. В частности, на многих телефонах на странице приложения нет вкладки «Аккумулятор», а есть вкладка «Разрешения», где можно запретить приложению работать в фоновом режиме.
Принудительное закрытие процессов
Другой способ остановить фоновые процессы — приостановить их. Как и в предыдущем способе, операцию можно выполнить через настройки смартфона. Инструкции следующие:
- Перейдите в раздел «Приложения».
- Перейдите в раздел «Приложения».
Проделайте то же самое со всеми приложениями, для которых вы хотите ограничить фоновую активность. Если вы не хотите тратить время на закрытие каждой программы по отдельности, просто выгрузите все процессы из рабочей памяти. Для этого откройте список запущенных приложений, проведя пальцем от нижней части экрана к середине или нажав квадратную кнопку на экране, а затем коснувшись символа крестика.
Возможные проблемы
Основная проблема, с которой вы можете столкнуться, если решите ограничить фоновые процессы, — это исчезновение уведомлений. Неважно, если игры перестанут их показывать, но если это произойдет в случае с мессенджером, ситуация станет фатальной. В этом случае рекомендуется выборочно отключить ограничения для отдельных программ.
Иногда возникает и обратная проблема, когда фоновые процессы не хотят быть деактивированными. Важно отметить, что приложение запускается сразу после его запуска. Поэтому, если вы закроете программу после ее перезапуска, она вернется в фоновый режим.
Если у вас есть аккаунт Google, данные пользователя регулярно передаются на удаленный сервер в фоновом режиме. Если вы отключите синхронизацию, некоторая информация не будет храниться в удаленном хранилище. Это снижает энергопотребление и уменьшает трафик данных, поскольку службам Google разрешено передавать данные в фоновом режиме.
Как работает фоновый режим на Андроиде
Фоновый режим похож на ПК-версию технологии, поскольку изначально он появился на настольных операционных системах и лишь позже был перенесен на мобильные платформы, такие как Android, iOS или Windows Mobile.
Здесь приложения запускаются в скрытом режиме, чтобы не мешать пользователю и не влиять на общую производительность системы, но продолжают активно выполнять свои специфические функции:
- Обновление операционной системы и программного обеспечения.
- Общение с сервером для обновления данных в виджетах.
- Уведомление человека о новых текстовых сообщениях или сообщениях в мессенджерах, социальных сетях и т.д.
В целом, приложения на телефоне Android имеют различные режимы работы:
- Активный. Приложение активно запущено.
- Неактивный. Приложение было запущено и находится в фоновом режиме, но не выполняет никаких действий, поскольку устройство переведено в спящий режим и т.д.
- Общие сведения. Приложение не находится на текущем экране, а продолжает работать в свернутом режиме.
- Остановлен. Приложение не выполняет свои операции, но все еще находится в памяти.
- Не работает. Приложение было удалено из списка активно работающих программ или вообще не запускалось.
Рисунок 3 Блокирование фонового использования
Включение и отключение фонового режима на Андроиде
После того как вы ознакомились с фоновым подключением Android, важно знать, как отключить фоновую функцию на Android. Пользователь может просто удалить определенные программы из фона или добавить их туда вместо них.
Полностью отключить функцию нельзя, но можно деактивировать передачу данных. Для этого:
- Зайдите в настройки телефона.
- Выберите «Беспроводные сети» или «Мобильный интернет».
- Найдите пункт «Передача данных» и параметр «Предупреждения и ограничение».
- Установите определенные предупреждения, когда программа потребляет больше трафика данных, чем положено, и ограничьте потребление интернета, когда лимит исчерпан.
Способы сократить количество активных пользовательских процессов через инженерное меню
Остановка» определенных процессов, запущенных в фоновом режиме через технологическое меню, чрезвычайно раздражает. Некоторые варианты для процессоров MTK вообще не предлагают этой опции, поэтому рекомендуется использовать специальные приложения или почистить сам автозагрузчик.
Очистка автозагрузки
Не все знают, как выйти из приложения на Android. Можно даже активировать и деактивировать фон для каждого приложения в отдельности. Это помогает только до перезагрузки телефона. Затем необходимо удалить автозагрузку телефона. Для этого можно использовать специальную программу, так как стандартных решений для этого не существует.
Один из них — All-In-One Toolbox, который позволяет ускорить работу устройства путем удаления ненужных приложений, которые значительно замедляют работу операционной системы при загрузке телефона. Он также устраняет фоновые процессы, сопровождающие запуск приложений во время автозапуска.
Это важно: вы можете сделать то же самое вручную, но для каждого из них необходимо удалить приложения или остановить их деятельность. Для этого зайдите в Настройки, найдите раздел Программное обеспечение и остановите некоторые из запущенных приложений.
Рисунок 4 Остановив программу, вы можете вывести ее из режима автоматического выполнения.
Как посмотреть список процессов, работающих в фоне на Андроиде
Чтобы увидеть список активных и запущенных приложений, необходимо загрузить программу Greenify или решение, описанное выше (All-In-One Toolbox). Сразу после входа в систему перед вами появятся все активные процессы с возможностью их деактивации и перехода в спящий режим.
Если вы не хотите загружать стороннее программное обеспечение, вы можете воспользоваться стандартным решением:
- Перейдите к настройкам устройства.
- Найдите раздел «Приложения».
- Выберите вкладку «Активный».
- Просмотрите список и, при желании, удалите любую программу из памяти, остановив ее.
Рисунок 5 Интерфейс Greenify
Устройства Android (за редким исключением старых моделей) оснащены функцией многозадачности. Это означает, что пользователь может переключаться между окнами без потери информации, быстро переходить к недавно открытому приложению, разделять экран на два рабочих пространства и так далее.
Руководство по фоновой работе в Android. Часть 1
Существует множество статей о фоновых приложениях в Android, но я не смог найти подробного руководства по реализации фонового выполнения — полагаю, потому что появляется все больше новых инструментов для такого рода выполнения. Поэтому я решил написать серию статей о принципах, инструментах и методах асинхронного выполнения в приложениях Android.
Будет несколько частей:
- Основной поток, Выполнение фонового задания с помощью AsyncTask, публикация результатов в основном потоке.
- Трудности при использовании AsyncTask. Loader как один из способов их избежать.
- Работа в фоновом режиме с ThreadPools и EventBus.
- RxJava 2 как метод асинхронной работы.
- Coroutines в Kotlin как метод асинхронных операций.
Давайте начнем с первой части.
Основы UI
Прежде всего, необходимо понять, почему мы имеем дело с фоновой работой в мобильных приложениях.
Все приложения Android имеют по крайней мере один поток, в котором происходит проектирование пользовательского интерфейса и обработка пользовательского ввода. Поэтому его также называют потоком пользовательского интерфейса или главным потоком.
Каждый метод жизненного цикла каждого элемента вашего приложения, включая Activity, Service и BroadcastReceiver, выполняется в потоке UI.
Человеческий глаз переводит меняющиеся изображения в плавное видео, когда частота кадров достигает 60 кадров в секунду (да, это магическое число взято отсюда), поэтому основному потоку требуется всего 16 мс, чтобы нарисовать весь экран.
Продолжительность разговора по сети может быть в тысячу раз больше.
Если мы хотим загрузить что-то из Интернета (прогноз погоды, пробки, сколько сейчас стоит ваш биткоин), нам не обязательно делать это из основного потока. Кроме того, Android не позволяет нам это сделать, поскольку выбрасывает NetworkOnMainThreadException.
Семь лет назад, когда я разрабатывал свои первые приложения для Android, подход Google ограничивался использованием AsyncTasks. Давайте посмотрим, как мы написали код для взаимодействия с сервером (в основном псевдокод):
Метод doInBackground() гарантирует, что он не будет вызван в главном потоке. Но какая нить? Это зависит от конкретного применения. Здесь вы можете увидеть, как Android выбирает поток (это часть исходного кода класса AsyncTask):
Здесь видно, что выполнение зависит от параметра исполнителя. Давайте посмотрим, откуда он берется:
Как уже упоминалось здесь, по умолчанию исполнитель обращается к пулу потоков размером 1. Это означает, что все AsyncTasks в вашем приложении будут выполняться последовательно. Так было не всегда, поскольку в версиях операционных систем от DONUT до HONEYCOMB использовался размер бака от 2 до 4 (в зависимости от количества ядер процессора). После HONEYCOMB задачи AsyncTasks снова выполняются последовательно по умолчанию.
Итак, работа была закончена, байты завершили свой долгий путь из другого полушария. Нам нужно преобразовать их в нечто вразумительное и вывести на экран. К счастью, наша активность налицо. Давайте вставим результат в одно из наших представлений.
О, черт! Вот оно, исключение!
Но мы не делали никаких сетевых вызовов в главном потоке! Верно, но мы пытались нарушить еще один закон UI. UI может быть изменен только через поток UI. Это справедливо не только для Android, но и почти для всех известных вам систем. Причина этого была адекватно объяснена в книге Java Concurrency In Practice. Короче говоря, архитекторы хотели избежать сложных блокировок изменений из нескольких источников (пользовательский ввод, привязки и другие изменения). Использование одного потока решает эту проблему.
Да, но интерфейс нуждается в обновлении. AsyncTask также имеет метод onPostExecute, который вызывается в потоке пользовательского интерфейса:
Как работает эта магия? Давайте посмотрим на исходный код AsyncTask:
AsyncTask использует обработчик для вызова onPostExecute в пользовательском интерфейсе, подобно методу postOnUiThread в компонентах Android.
Обработчик скрывает все внутренние функции. Какие? Идея заключается в том, чтобы иметь бесконечный цикл для проверки сообщений, поступающих в поток UI, и обрабатывать их соответствующим образом. Здесь никто не изобретает колесо, хотя педалей много.
Для Android это реализовано классом Looper, который передается в InternalHandler в приведенном выше коде. Суть класса Looper заключается в методе loop:
Фоновая работа на устройствах Android используется для передачи данных из приложений без участия или работы пользователя, пока смартфон находится в режиме ожидания (когда экран выключен).
Диспетчер задач
Сторонние приложения можно использовать для регулярной и быстрой очистки процессов в фоновом режиме. В качестве примера вы можете посмотреть на диспетчер задач.
Она работает аналогично той, что установлена на вашем компьютере, но интерфейс более простой.
На главном экране есть кнопка «Очистить память», которая позволяет приостановить активные приложения. В настройках можно установить автоматическую очистку при блокировке смартфона.
В процессе установки менеджер задач создает виджет, который можно отображать на главном экране и удалять при необходимости без необходимости открывать приложение.
Ограничение фоновой активности повышает производительность смартфона, особенно при использовании приложений с высокой емкостью, которые ограничивают скорость работы устройства, тем самым экономя заряд батареи.
Блокируя трафик мобильных данных или использование беспроводной связи, вы можете экономить деньги в Интернете и избегать навязчивой рекламы.
Если ваше устройство замедлило работу или объем передаваемых данных увеличился, внимательно проанализируйте поведение приложений и установите ограничения, чтобы улучшить ситуацию.