Вытеснение фоновых Activity в режиме разработчика — что это такое?
Что такое вытеснение фоновых Activity в режиме разработчика на смартфоне?
Режим разработчика — особый раздел, который можно включить на любом смартфоне на Android. В нем содержатся дополнительные настройки, позволяющие собирать статистику, совершать отладку, ускорять интерфейс, а также другие инструменты для более расширенной работы с ПО телефона. Одна из функций режима разработчика — вытеснение фоновых Activity.
Зачем нужно вытеснение фоновых Activity в режиме разработчика?
Вытеснение фоновых Activity — функция, которая позволяет увеличить быстродействие работы телефона. Значительную часть оперативной памяти занимают приложения, работающие в фоне, т.е. после того, как пользователь их закрыл. Функция «Вытеснение фоновых Activity» позволяет принудительно выгружать части приложений, чтобы «разгрузить» оперативную память.
Этот инструмент включает автоматическую очистку кэша (временных файлов) сразу после того, как приложение будет закрыто. Однако активация этой функции может повлечь за собой такие проблемы, как вылет приложений или их зависание. В таком случае рекомендуется ее отключить.
Чтобы включить или выключить вытеснение фоновых Activity, пользователю необходимо:
- Включить режим разработчика. Для этого нужно открыть раздел «О телефоне», а затем 5-7 раз нажать на строку «Номер сборки», чтобы появилось уведомление о включении режима разработчика.
- Найти в настройках телефона появившийся раздел «Для разработчиков».
- В подразделе «Приложения» найти строку «Вытеснение фоновых Activity» и либо активировать ползунок, либо его деактивировать.
Рекомендуем почитать:
- Отладка по Wi-Fi в режиме разработчика — что это и зачем нужно?
- Отладка графического процессора в смартфоне — что это и зачем нужно?
- Работающие службы на Android — что это и зачем нужно?
- Использование памяти приложениями — что есть полезного в этом разделе?
- Как увеличить клавиатуру на смартфоне?
Do not keep activities
«Не сохранять операции» — именно таким странным образом переведена фраза «Do not keep activities» в настройках Android. А описание «Удалять все операции сразу после их завершения пользователем» не добавляет ясности. Включается она в меню «Параметры разработчика» (Developer Options), находится в самом низу.
Работает эта настройка очень просто, когда она включена, все неактивные активити умирают. Т.е. после перехода из активити A в активити B, активити A уничтожается. Таким образом можно проверить насколько вписывается ваше приложение в activity lifecycle.
Не хочется вдаваться в подробности lifecycle, но, в двух словах, система убивает фоновую активити когда захочет. В реальности это происходит не так редко, так что не стоит этим пренебрегать. Например, вам кто-то позвонил. Во время вашего разговора система может убить активити приложения, которым вы только что пользовались.
Или, самый простой способ убить активити — повернуть экран (если не android:configChanges=«keyboardHidden|orientation|screenSize»). Но не все приложения поддерживают поворот экрана. Да и те, которые поддерживают, встречаются с ошибками lifecycle на этапе разбработки, так что у них как раз проблем и не должно быть. Второй простой способ — сменить язык устройства.
Ну и разумеется можно просто включить «Do not keep activities».
Я потратил несколько дней на исправление ошибок, после того как прошелся по своему приложению с «Do not keep activities». Теперь, думаю, стоит всегда включать эту настройку на время разработки. Главной моей проблемой было корректное подключение социальных сетей в приложении.
Почти не возникло проблем с Вконтакте, с их SDK можно написать все правильно, но все таки есть у них небольшая проблема. А именно, после авторизации через приложение, результат возвращается в onActivityResult. По документации, нужно вызвать
VKUIHelper.onActivityResult(requestCode, resultCode, data);
однако, в случае уничтожения активити нашего приложение, вылетит NPE, поэтому сначала нужно вызвать
VKUIHelper.onResume(this);
Не совсем очевидно, да и незадокументировано. Завел issue, на всякий.
Были проблемы с Facebook, потому как, по глупости своей, я решил использовать android-simple-facebook, а ее автор, как я понял, не особо парился по поводу android lifecycle. Пришлось полностью от него отказаться и переделывать все на официальный SDK Facebook и все проблемы ушли. Хотя, наверное, можно было и так все поправить одной строчкой, но пути назад уже не было.
И совсем не было проблем с Twitter, потому что все работает просто, как топор. У них просто нет своего SDK и авторизации через приложение. Приходится делать все по старинке, через WebView. Вообще у них самая ужасная авторизация из всех.
Ну да это так, лирическое отступление.
Есть проблемы с PayPal SDK, оно просто валится везде где только можно. Благо кто-то уже завел issue до меня и наверняка они в скором будущем это поправят.
Другие примеры
У меня не много приложений на телефоне, да и смотреть их все мне, если честно, лень, но я не мог пройти мимо недавно вышедшего приложения хабра. Начнем, конечно же, с него. Ну и добавлю ошибку Payoneer, которую нашел случайно:)
Хабрахабр
Я потыкался по разным экранам и уже было расстроился, неужели все написано правильно и один лишь я делаю столько ошибок. Но нет, я таки добрался до страницы About:
Caused by: java.lang.NullPointerException at ru.habrahabr.activity.about.AboutFragment.onAttach(AboutFragment.java:44)
Payoneer
Много времени не понадобилось. Экран логина, ушел в keepass за паролем, вернулся — гипс крэш:
Caused by: java.lang.NullPointerException at com.payoneer.android.ui.fragment.LoginFragment.initializeOnCreateData(LoginFragment.java:379) at com.payoneer.android.ui.fragment.LoginFragment.onCreate(LoginFragment.java:152)
Ещё есть некоторые приложения без крэшэй, но с неправильным поведением, например, не сохраняется открытый фрагмент, а вместо него, после пересоздания, снова показывается главный экран приложения.
P.S.
Используйте настройку «Do not keep activities», надеюсь для кого-то эта информация окажется новой и поможет избежать ошибок поведения и крэшэй.
Думаю тоже смог бы избежать кучи репортов в Google Play, если бы сразу знал об этой настройке.
Ах да, репорты отправил.
- android development
- android
- appgranula
Мы нашли секретный способ управлять фоновыми процессами в телефоне. Показываем
Если вы заметили, что смартфон стал работать медленнее, а некоторые приложения зависают или перестают отвечать, возможно, виной тому являются процессы, которые работают в фоновом режиме и отнимают слишком много ресурсов телефона. В этой статье расскажем как ограничить их работу с помощью скрытой настройки меню.
Работа смартфона — весьма сложный процесс, который не прекращается ни на минуту даже ночью, когда телефон лежит у вас под подушкой. Большинство процессов в смартфоне продолжают свою работу незаметно для глаз пользователя и могут потреблять достаточно большое количество ресурсов.

Многие пользователи ошибочно считают, что оперативную память «съедают» те приложения, которые остаются свернутыми, и если их закрыть, можно таким образом освободить бОльшую часть памяти.
На самом деле это не так. Свернутые приложения, находящиеся в режиме ожидания — это лишь верхушка айсберга. По сути – это только кэшированные данные, которые позволяют вам вернуться в приложение без потери последних данных. Закрыв их, вы сможете лишь немного освободить оперативную память телефона. Основная же часть ресурсов приходится на процессы или службы приложений. Именно они потребляют оперативную память и расходуют заряд батареи даже тогда, когда приложение закрыто.
Не все из них одинаково полезны, но есть и те, которые могут отвечать за безопасность устройства и его стабильную работу. Тем не менее, если телефон стал слишком задумчивым и вы замечаете, что он потребляет заряд батареи, даже находясь в режиме ожидания, вам будет полезно узнать как ограничить работу фоновых процессов и тем самым освободить оперативную память устройства, а также повысить его быстродействие.
Как управлять фоновыми процессами
Получить расширенный контроль над фоновыми процессами можно с помощью специальных инструментов, встроенных в операционную систему. В смартфонах Android эта возможность реализована с помощью скрытого меню для разработчиков.
Как включить параметры разработчика
Для того, чтобы активировать режим разработчика, необходимо перейти в Настройки телефона, открыть пункт «Сведения о телефоне», затем «Сведения о ПО» и несколько раз подряд нажать на пункт «Номер Сборки» до появления системного уведомления о том, что режим разработчика активирован.

Затем нужно вернуться назад, в главные настройки. Если все было сделано правильно, вы увидите, что внизу появился новый пункт меню «Параметры разработчика».

Как управлять фоновыми процессами
Для того, чтобы управлять фоновыми процессами, в меню «Параметры разработчика» необходимо найти пункт «Приложения». Здесь находится несколько параметров, отвечающих за работу фоновых процессов. Например, параметр «Вытеснение фоновых Activity» позволяет принудительно останавливать действия приложений после их закрытия (не рекомендуем включать), а параметр ANR в фоновом режиме — отображать фоновые уведомление в случае, когда какой-то процесс не отвечает.
Больше всего нас здесь интересует параметр «Лимит фоновых процессов», который позволяет выбрать какое количество процессов будет использоваться вашим смартфоном в фоне. Данное ограничение затрагивает в основном сторонние приложения, установленные пользователем, поэтому можно не переживать за работающие системные службы.
По умолчанию здесь установлено значение «Стандартное ограничение».

Для слабых смартфонов с небольшим количеством оперативной памяти можно ограничиться значением «не более 1−2 процессов». Для устройств «пошустрее» можно установить лимит «не более 4 процессов».
Полное отключение фоновых процессов может повлиять на корректную работу некоторых приложений, поэтому мы не рекомендуем использовать данную функцию по максимуму, особенно если вы активно пользуетесь мессенджерами, почтой и другими приложениями, которые требуют проверки уведомлений.
Заключение
Теперь вы знаете, как, изменив лимит фоновых процессов, можно существенно снизить потребление оперативной памяти и повысить общее быстродействие смартфона. Но помните, что использовать меню разработчика стоит только в том случае, если у вас наблюдаются существенные проблемы в работе устройства и не пренебрегайте этим правилом без крайней необходимости, в противном случае есть риск навредить работе гаджета.
Как ускорить работу Android
Смартфоны на Android славятся тем, что спустя время на них начинаются проблемы с производительностью, что особенно остро ощущается на бюджетных смартфонах. Сегодня попробуем помочь вам избавиться от лагов:
Анимации — да-да, весьма неплохо так кушают ресурсы вашего телефона. Заходим в параметры разработчика (предварительно включив их многочисленными тапами по номеру сборки в «Сведениях о ПО»), находим пункт с анимациями и у всех трёх параметров выбираем «без анимации»;
Меньше фоновых процессов — там же находим пункт «Лимит фоновых процессов» и изменяем его. Советуем экспериментальным путём выяснить оптимальное показатель и не выключать фоновые процессы совсем, ведь это может сказаться на работе телефона;
Экономим оперативку — чуть выше прошлого пункта есть параметр «вытеснение фоновых Activity», включение которого будет принудительно останавливать действия приложений после выхода из них.
