Подтвердить что ты не робот

Каково главное преимущество и недостаток "не держать действия" в 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, добровольно делитесь опытом с ним.

4b9b3361

Ответ 1

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

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

Что именно это делает?

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

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

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

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

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

Ответ 2

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

  • Вы сохранили состояние активности, прежде чем оно запустится.

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

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

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

Ответ 3

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

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

НЕДОСТАТКИ:

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

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

Ответ 4

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

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

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

Подробнее

Ответ 5

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