Dont keep activity 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. По документации, нужно вызвать
однако, в случае уничтожения активити нашего приложение, вылетит NPE, поэтому сначала нужно вызвать

Не совсем очевидно, да и незадокументировано. Завел issue, на всякий.

Были проблемы с Facebook, потому как, по глупости своей, я решил использовать android-simple-facebook, а ее автор, как я понял, не особо парился по поводу android lifecycle. Пришлось полностью от него отказаться и переделывать все на официальный SDK Facebook и все проблемы ушли. Хотя, наверное, можно было и так все поправить одной строчкой, но пути назад уже не было.

И совсем не было проблем с Twitter, потому что все работает просто, как топор. У них просто нет своего SDK и авторизации через приложение. Приходится делать все по старинке, через WebView. Вообще у них самая ужасная авторизация из всех.
Ну да это так, лирическое отступление.

Есть проблемы с PayPal SDK, оно просто валится везде где только можно. Благо кто-то уже завел issue до меня и наверняка они в скором будущем это поправят.

Другие примеры

У меня не много приложений на телефоне, да и смотреть их все мне, если честно, лень, но я не мог пройти мимо недавно вышедшего приложения хабра. Начнем, конечно же, с него. Ну и добавлю ошибку Payoneer, которую нашел случайно:)

Хабрахабр

Я потыкался по разным экранам и уже было расстроился, неужели все написано правильно и один лишь я делаю столько ошибок. Но нет, я таки добрался до страницы About:

Payoneer

Много времени не понадобилось. Экран логина, ушел в keepass за паролем, вернулся — гипс крэш:

Ещё есть некоторые приложения без крэшэй, но с неправильным поведением, например, не сохраняется открытый фрагмент, а вместо него, после пересоздания, снова показывается главный экран приложения.

Читайте также:  Настройки точки доступа мотив для андроид

Используйте настройку «Do not keep activities», надеюсь для кого-то эта информация окажется новой и поможет избежать ошибок поведения и крэшэй.
Думаю тоже смог бы избежать кучи репортов в Google Play, если бы сразу знал об этой настройке.

Источник

В чем главное преимущество и недостаток «не сохранять активности» в Android

Один вопрос, который я хотел бы получить, если бы кто-нибудь мог ответить на него, например: Do not keep activities параметры, которые необходимо проверить во время тестирования мобильного приложения Android от разработчиков.

Я использовал его в своем приложении и обнаружил, что мое приложение ведет себя некорректно и дает сбой при включении Do not keep activities в Android.

Моих вопросов было немного:

1: How much this option will affect mobile applications?

2: What exactly does this do?

Это похоже на убийцу приложений, я заметил в параметрах разработчика поле с надписью Не сохранять действия — destroy every activity as soon as the user leaves it .

Создает ли это положительную или отрицательную функциональность в моих приложениях?

Означает ли это, что если я открываю приложение и как только выхожу из него, оно фактически закрывает это приложение, и я не увижу его в диспетчере задач, чтобы вручную убить его? Если да, то разве это не хорошая вещь для снижения использования ОЗУ?

Каковы были преимущества и недостатки его использования при сохранении Do not keep activities , пожалуйста, поделитесь своим опытом.

6 ответов

Насколько эта опция повлияет на мобильные приложения?

Если они хорошо написаны, эта опция на них не повлияет.

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

Означает ли это, что если я открываю приложение и как только выхожу из него, оно фактически закрывает это приложение, и я не увижу его в диспетчере задач, чтобы вручную убить его?

Нет, это означает, что все несохраненные переменные будут удалены. Например, когда вы нажимаете кнопку «Домой».

Создает ли это положительную или отрицательную функциональность в моих приложениях?

Нет, это только помогает правильно разработать приложение. Помогает предугадывать неожиданные ситуации.

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

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

Опция Do not keep activities рядом с Developer options позволяет разработчикам легко воспроизвести тот же сценарий.

В идеале хорошо разработанное Android-приложение должно обрабатывать onSaveInstanceState и onRestoreInstanceState сохранение и восстановление локальных переменных всех действий.

Более подробная информация представлена ​​здесь на официальном сайте разработчиков Android.

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

Представьте, что у вас есть синглтон , от которого зависят ваши классы. После того, как система убьет приложение, ваши синглтоны также будут очищены и восстановлены с начальным состоянием, если вы не реализовали его восстановление самостоятельно. Таким образом, несмотря на то, что ваше состояние просмотра активности и поля будут восстановлены, если onSaveInstanceState и onRestoreInstanceState были реализованы правильно, это не гарантирует правильного поведения приложения после восстановления, даже на конкретном экране. Это следует учитывать

Читайте также:  Название операционной системы для андроида

Поэтому, чтобы полностью протестировать такой случай, вы должны остановить приложение вручную, но не бросать его из диспетчера задач. Самый простой способ — с помощью кнопки остановки красного квадрата в студии Android. И снова откройте приложение.

ПРЕИМУЩЕСТВО :

Разработчик может проверить ненормальное поведение своего приложения и исправить случаи low memory — framework kills the application

НЕДОСТАТКИ :

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

Очень хороший ответ об использовании можно найти на форуме разработчиков xda. этого варианта

Не сохранять действия — это исключительно вариант разработчика, который поможет вам проверить,

  1. Вы сохранили состояние действия до того, как оно перейдет в фоновый режим.

2. Handled малым объемом памяти Ситуации, соответствующим образом (в этом случае активность будут уничтожены). ̶

Изменить : этот параметр не имитирует ситуации с нехваткой памяти. Когда на устройстве не хватает памяти, система может запросить операцию Drop, вызвав Finish (), или она может продолжить и полностью убить процесс, как говорится в комментарии.

С включенной опцией по-прежнему хорошо разрабатывать. Вам нужно будет правильно запрограммировать методы onSaveInstanceState() и onRestoreInstanceState() . Таким образом, даже если процесс будет остановлен, когда пользователь вернется к этому действию, onCreate () будет вызываться с сохраненнымInstanceState, который был сохранен в методе onSaveInstanceState(Bundle) .

Источник

What is «Don’t Keep Activities» in Android Developer Options

You might have heard lot about Android’s hidden and secret settings. I am talking about developer options. As name itself speak, these settings are intended for development use only. People who make Android apps can use these options to test their app performance and for debugging process.

They allow you to see CPU usage, screen touches, pointer location, screen updates, layout bounds and other useful information. They also allow to slow down and speed up the animation scales manually. For example, you can increase or decrease the screen transition time.

One of the most popular and talked feature of developer options is «Don’t keep activities». Some people have misunderstanding about this feature. So I am here to explain you everything about it. But before that, you should know about how to enable these developer options settings in your Android phone.

How to enable developer options

As these developer options are for development use only, so changing their default settings may affect your phone’s performance. This is the main reason why they are hidden so that no other person can use them. However, it pretty much easy to enable these developer options. Simply follow these step-by-step guide —

First of all, go to «Settings» and click «About phone». Here you’ll find «Build number» option. Now click it more than 7 times as fast as you can. After too many clicks, it will display a dialog box showing a message as «You are now a developer!».

Finally go back to the settings window and you will find new «Developer options» there.

Note: After enabling developer options, you can not hide them again. The only way is to reset your phone settings. However, you can turn off this feature any time. To do this, go to «Settings > Developer options» and switch off the button at the top-right corner of the screen. Make sure that it’s turned off when not in use.

Читайте также:  Tv box android что выбрать

What does «Don’t keep activities» feature actually do?

Now let’s come to the main part. In developer options, you’ll find a setting named as «Don’t keep activities» under apps section. If this feature is enabled, your phone will automatically destroy every activity as soon as you leave it. Here’s what it actually do —

We all know that Android phones also have RAM memory which is used by system and other third-party apps to save their temporary files (such as images, text or thumbnails). Each app needs its own space to work.

As soon as the operation is completed, app will automatically leave the RAM space and delete all its cached data. While on the other hand, there are some applications which work in background even when you’re not using them.

Tell me how it was possible to get WhatsApp and Facebook push notifications when your phone is locked. It’s all because of apps running in background. In the same way, there are hundreds of other activities working every time in your Android phone.

«Don’t keep activities» feature simply kill all those activities when they are not in use. As much as I know, this works in the same manner as other task killer apps works. Although, it’s a good way to free up some RAM space but actually you have no solid reason to use it. Think it in this way —

As soon as this feature will kill activities, some apps may force them to work again. This will continue as an infinite loop and may lead to slow down in your phone’s performance.

  • Also read: How to prank your friends with Android developer options

Drawbacks of using this feature

The above title is little bit confusing. One side I had used a word «feature» and on the other hand, I am using «drawbacks». Well it’s true that this settings option is a feature but if you’ll use it continuously, it may result into few major drawbacks which are explained as follows —

  • Eat battery life: After enabling this feature, your phone will start eating more battery life and it will drain at fastest rate. The reason is very simple. As already mentioned, some apps will force activities to work, while this feature will destroy them. Doing this, your phone will consume more battery power.
  • Slow down phone speed: As this feature will destroy activities, next time your phone have to go through the complete process to open them again, which will take more than usual time to load. You can feel and see it by yourself. Even the app icons and thumbnails will load very slow.

Now come to the conclusion part. So do you really need to use this feature? The short and simple answer is no because there is no benefit of using it. Moreover, it will eat your battery life and affect phone’s performance.

This is all what you need to know about «Don’t keep activities» feature in your Android developer options. If you’ve any doubts, share them in below comment box. What do you think about this feature? Where do you think this can be helpful?

Источник

Оцените статью