Android 4: Параметры разработчика: Не сохранять операции?
В настройках телефона в разделе «Параметры разработчика» имеется опция «Не сохранять операции». В описании опции мелким шрифтом написано «Удалять все операции сразу после их завершения пользователем».
Кто-нибудь может объяснить понятным языком с примерами что это означает?
У некоторых пользователей эта опция почему-то оказывается включенной и программа благополучно не работает как положено.
- Вопрос задан более трёх лет назад
- 26646 просмотров
Комментировать
Решения вопроса 1
Это означает — не держать activity активными, а сразу прибивать.
Эта опция используется для проверки ситуаций, когда, например, приложение должно быть закрыто по нехватке памяти или если очень давно не было активно. С этой опцией вам не нужно ждать когда приложение будет закрыто системой, устанавливая галочку, вы просите закрывать все сразу же, таким образом можете протестировать все возможные ситуации. Тут обычно много чего сразу вылазит, чего не видно в обычном режиме, в основном связанное с сохранением и восстановлением состояния активити.
Вы как разработчик должны активировать эту опцию у себя и удостоверится, что программа работает нормально.
Ответ написан более трёх лет назад
Нравится 5 5 комментариев
shadowspok @shadowspok Автор вопроса
спасибо! теперь все прояснилось. при вызове нового activity текущее закрывается. и если в нем данные не сохраняются, то беда…
nicolausYes @nicolausYes
Подождите. Т.е., при открытии нового Активити закрывается родительское Активити? И если нажать Назад на новом, будет вызвано onCreate в родительском? О_о
shadowspok @shadowspok Автор вопроса
судя по поведению моего приложения, все именно так и происходит. надо отладчиком пройтись для полной уверенности.
nicolausYes @nicolausYes
Мало в это верится. Судя по иерархии важности процессов, андроиду стоило бы сначала убить другие процессы. Надо будет посмотреть код. Если что-то узнаете – отпишитесь, пожалуйста. Можно и в личку.
shadowspok @shadowspok Автор вопроса
так это же специальная девелоперская опция, чтобы проверить работу в жестких условиях эксплуатации ))
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
Вытеснение фоновых Activity в режиме разработчика — что это такое?
Что такое вытеснение фоновых Activity в режиме разработчика на смартфоне?
Режим разработчика — особый раздел, который можно включить на любом смартфоне на Android. В нем содержатся дополнительные настройки, позволяющие собирать статистику, совершать отладку, ускорять интерфейс, а также другие инструменты для более расширенной работы с ПО телефона. Одна из функций режима разработчика — вытеснение фоновых Activity.
Зачем нужно вытеснение фоновых Activity в режиме разработчика?
Вытеснение фоновых Activity — функция, которая позволяет увеличить быстродействие работы телефона. Значительную часть оперативной памяти занимают приложения, работающие в фоне, т.е. после того, как пользователь их закрыл. Функция «Вытеснение фоновых Activity» позволяет принудительно выгружать части приложений, чтобы «разгрузить» оперативную память.

Этот инструмент включает автоматическую очистку кэша (временных файлов) сразу после того, как приложение будет закрыто. Однако активация этой функции может повлечь за собой такие проблемы, как вылет приложений или их зависание. В таком случае рекомендуется ее отключить.
Чтобы включить или выключить вытеснение фоновых Activity, пользователю необходимо:
- Включить режим разработчика. Для этого нужно открыть раздел «О телефоне», а затем 5-7 раз нажать на строку «Номер сборки», чтобы появилось уведомление о включении режима разработчика.
- Найти в настройках телефона появившийся раздел «Для разработчиков».
- В подразделе «Приложения» найти строку «Вытеснение фоновых Activity» и либо активировать ползунок, либо его деактивировать.
Важные функции секретного меню для разработчиков

Секретное меню для разработчиков содержит порядка 90 скрытых настроек в твоем смартфоне. Некоторые из них нужны только опытным пользователям, другие – для проведения тестирования устройства. Разберем только самые полезные из них.
В зависимости от модели вашего смартфона, пункты меню могут немного различаться и находиться в другом порядке.
Как включить меню разработчиков?
На примере Samsung: идем в Настройки – Сведения о телефоне – Сведения о ПО – Номер сборки (жмем несколько раз). Далее в настройках появится пункт “Параметры разработчика”.
На примере Xiaomi: идем в Настройки – О телефоне – Версия MIUI (жмем несколько раз). Далее в расширенных настройках появится пункт “Для разработчиков”.
На примере чистого Android: идем в Настройки – Система – Дополнительно – О телефоне – Номер сборки (жмем несколько раз). Далее в настройках Системы появится новый пункт “Для разработчиков”.
Общие настройки

Пароль для резервного копирования. Защищает ваши локальные копии паролем. Т.е., чтобы сделать резервную копию или восстановиться из нее, нужно будет ввести пароль. Все ваши резервные копии хранятся в папке backup.
Не выключать экран – во время зарядки экран всегда будет включен. Эта настройка удобна, когда снимаешь видео с презентацией смартфона, в остальных случаях – бесполезна.
Пропускать экран блокировки (для Xiaomi) – не включаем, чтобы обезопасить свои данные. Можно активировать специально для пожилых, чтобы не приходилось каждый раз разблокировать смартфон. Перед этим в настройках безопасности отключаем блокировку по паролю и отпечатку.
Включить журнал HCI Bluetooth – используется разработчиками, когда нужно перехватить какие-то данные по Bluetooth между телефоном и умными часами, например.
Заводская (OEM) разблокировка – вы включаете процесс разблокировки загрузчика, например, для установки root и кастомной прошивки.
Сервис WebView – отвечает за отображение контента внутри приложений, а не перекидывает вас в браузер при нажатии по ссылке. Например, удобно просматривать новостную ленту вКонтакте.
Статус Mi Unlock (для Xiaomi) – нужна для разблокировки загрузчика, при установке root.
Автоматические обновления – Android сам обновляется без вашего участия. А все обновления применяются после перезагрузки устройства.
Деморежим – ненужная настройка, отключает все подключения (сеть, wifi, bluetooth). Используют, чтобы делать красивые скриншоты без верхней строки состояния и чтобы показать, что телефон типа ловит сеть, когда на самом деле он нерабочий.
Темная/светлая тема – меняете световую тему на уровне системы.
Плитки быстрых параметров для разработчиков – выводит некоторые настройки из меню разработчиков в Центр управления (шторку).
Агенты доверия – откладывает момент блокировки смартфона при использовании функции Smart Lock Google. Эта функция сама разблокирует/заблокирует телефон в зависимости от привычек поведения пользователя. Лучше не включать для своей же безопасности.
Блокировать экран при утрате доверия. Если телефон был разблокирован “неестественным образом” при включенном агенте доверия, например, в незнакомом месте или чужим голосом, то эта функция сразу блокирует смартфон.
Отладка
Эта часть настроек для отлаживания работы телефона в случае каких-то сбоев через компьютер.
Отладка по USB | Отладка по Wi-Fi – разрешаем отладку телефона по кабелю или WiFi.
Отозвать доступ для USB отладки – запрещаем доступ к USB отладке для всех ПК, которым он был разрешен.
Установка через USB – чтобы ставить приложения на телефон прямо с компьютера.
Приложения для фиктивных местоположений – можно задать любую страну, и все приложения и сервисы будут думать, что вы находитесь там.
Включить проверку атрибутов – будет проводиться проверка атрибутов во время отладки работы телефона с ПК.
Приложение для отладки – выбрать приложение по умолчанию для отладки телефона, если у вас их несколько установлено.
Ждать подключения отладчика – отлаживаемое приложение не будет запускаться до тех пор, пока не запущен отладчик.
Проверять приложения при установке – проверяет все приложения, установленные через ПК антивирусом и другими средствами безопасности, которые стоят в вашем телефоне.
Проверять байт код – настройка ни на что не влияет.
Размер буфера журнала – это размер текстового документа, где хранятся все данные при отладке, сюда записываются ошибки и баги. НЕ ВЛИЯЕТ на производительность смартфона. Можно вообще отключить.
Отладка графического процессора (GPU) – опция для мастеров при решении проблем с видеодрайверами, например.
Настройки GameDriver (Графический драйвер) – выбираем, какой драйвер будет использоваться для работы конкретного приложения. По умолчанию система сама выбирает наилучший драйвер. Настройка только для профи.
Трассировка системы – записывает активность устройства за несколько секунд в отдельном файле. Нужно для разработчиков мобильных приложений. Для остальных бесполезная функция.
Сети
Сертификация беспроводных мониторов – выводит информацию сертификации при подключении к ТВ через Miracast.
Расширение покрытия WiFi – можно расширить зону действия вашего роутера или точки доступа, используя телефон как репитер, т.е. повторитель сигнала.
Ограничения запросов Wi-Fi (Xiaomi) – уменьшает разряд батареи и повышает производительность сети.
Безопасный режим WiFi – приоритет стабильности WiFi над производительностью.
Не отключать мобильный интернет – одновременно работает и WiFi, и мобильный интернет для быстроты. Идет дополнительный расход заряда батареи.
Аппаратное ускорение в режиме модема – улучшает скорость при раздаче интернета с телефона на ПК. Сейчас почти не используется.
Конфигурация USB по умолчанию – устанавливает режим работы телефона при подключении к ПК по кабелю. Это передача файлов, usb-модем, передача изображений или только зарядка.
Отключить абсолютный уровень громкости – нужно, если какие-то проблемы со звуком на Bluetooth колонке или наушниках, либо если на них нельзя выставлять громкость.
Отключить аппаратную загрузку A2DP – если проблемы “заикания” звука на Bluetooth колонке или наушниках. Может пропасть стерео звучание.
Аудиокодек Bluetooth: SBC – самый простой кодек для передачи звука на беспроводные наушники, без улучшений; AAC – лучше качество звука; aptX и LDAC – передача звука очень высокого качества (главное, чтобы наушники поддерживали выбранный кодек).
Частота дискретизации аудио Bluetooth – чем больше значение, тем лучше и качественнее звук в беспроводных наушниках или колонке.
Режим аудиоканала Bluetooth – стерео или моно звучание звука в наушниках.
Ввод
Показывать нажатия – визуализирует ваши нажатия по экрану. Обычно применяют, при записи видео с экрана смартфона.
Место касания – идет запись движения указателя по экрану, плюс координаты X,Y.
Отрисовка
Подсвечивать окна | Показывать обновления поверхности – подсвечивает фиолетовым окно приложения при любом ваше действии.
Показывать границы объектов (элементов) – очерчивает границы всех объектов на странице, кнопки, пункты меню т.д. Нужно для мобильных разработчиков.
Отразить интерфейс – меняет расположение всех меню и кнопок справа налево. Если в Израиль никто не собирается, настройку не активируем ))
Анимация окон – отключаем для ускорения работы телефона.
Анимация переходов – отключаем для ускорение телефона.
Длительность анимации – отключаем, если телефон тормозит.
Эмуляция вторичных (дополнительных) экранов – показывает, как бы выглядел экран смартфона при другом разрешении. Обычно используется разработчиками мобильных приложений.
Минимальная ширина – можно изменить ширину экрана, чтобы на экране поместилось больше/меньше информации. При увеличении значения dpi шрифт уменьшается, а при уменьшении dpi – картинка и шрифт увеличиваются.
Вырез на экране | Симуляция выреза – позволяет эмулировать разные вырезы/челки на экране.
Аппаратное ускорение отрисовки | визуализации
Большинство опций в этом разделе будут полезны только разработчикам и мастерам по ремонту. Простым пользователям они вообще не нужны.
- Включить 4x MSAA – в некоторых играх и анимационных сценах сглаживает картинку, делает ее более приятной на глаз. Быстро разряжает батарею.
- Отключить наложение | Аппаратное наложение – при запуске “тяжелого” приложения часть вычислительных задач перекладывается с центрального процессора (CPU) на графический процессор (GPU). Прирост производительности минимальный, быстрый разряд батареи.
- Имитация аномалии – для людей с нарушениями зрения, кто не различает красный/зеленый, синий/желтый цвета. Включает монохромный режим.
Мультимедиа
Пункт “Отключить передачу аудио” – отключает передачу звука на любое подключенное по USB устройство (ЦАП, усилитель, наушники, звуковая карта, наушники Type-C).
Приложения
Следующие настройки связаны с работой приложений в телефоне. Вот самые полезные из них.
Не хранить Activity – полностью “убивает” запущенные в фоне приложения. Функция неоднозначная, и многие не советуют ее включать – могут быть проблемы с запуском и работой приложений.
Лимит фоновых процессов – сколько приложений могут работать в фоновом режиме, остальные “убиваются”. Не советую сокращать стандартный лимит, т.к. нужное вам приложение может быть принудительно закрыто системой.
Всегда показывать сообщения при сбое приложения | Отображение окна ошибки. Бесполезно для обычного пользователя. Только для тестировщиков.
Показывать все ANR – если приложение зависло, выводит сообщение “Приложение не отвечает”. Если пункт активен, сообщение выводится для всех приложений – запущенных и работающих в фоновом режиме.
Разрешить сохранение на внешние накопители – приложения и кэш можно устанавливать на карту памяти. Очень полезная настройка, когда в телефоне мало памяти.
Изменение размера в многооконном режиме – разрешает открытие окон произвольной формы. Бесполезная сейчас опция.
Ограничение доступа к SMS – доступ к звонкам и сообщениям будут иметь только приложения по умолчанию (Контакты и Вызовы), а все остальные приложения потеряют этот доступ, даже если вы сами им давали этот доступ ранее.
Подводя итоги, хочу сказать: будьте аккуратны с настройками в пункте Для разработчиков. Настраивайте именно те пункты меню, когда вы точно понимаете, за что они отвечают. Иначе придется делать сброс настроек до заводских в некоторых случаях, особенно при изменении разрешения или ширины экрана.
- Топ 5 особенностей Android 8.1 для разработчиков
- Android 9 Pie: новые настройки, функции и дизайн
- Какой защищенный телефон на Андроид выбрать? Меню рекавери
- Как войти в инженерное меню Android
- Инженерное меню Xiaomi