Сколько действий рекомендуется хранить в стеке?

Я знаю, как работает жизненный цикл деятельности. Но у меня есть один вопрос. Сколько занятий рекомендуется хранить в стеке? Например, у меня около 6 занятий. Пользователь будет перемещаться от первого действия до последнего. Действия будут идти шаг за шагом от начального до последнего, и снова с backPress в первом. Вот мой mapViewСколько действий рекомендуется хранить в стеке?

Есть только один шаг, на котором я перехожу от действия 3 к действию 1. В этом случае я использую

finishAffinity();

убедитесь, что весь стек чистый, а затем я снова начинаю новый Activity 1

Добавляя к приведенному ниже ответу, единственное, что вас может беспокоить по поводу памяти, - это onSaveInstanceState, поэтому держите его как минимум, также незавершенные AsyncTasks обычно приводят к сбою состояния Activity. Просмотры будут уничтожены.

Marcos Vasconcelos 18.05.2018 22:30
Пользовательский скаляр GraphQL
Пользовательский скаляр GraphQL
Листовые узлы системы типов GraphQL называются скалярами. Достигнув скалярного типа, невозможно спуститься дальше по иерархии типов. Скалярный тип...
Как вычислять биты и понимать побитовые операторы в Java - объяснение с примерами
Как вычислять биты и понимать побитовые операторы в Java - объяснение с примерами
В компьютерном программировании биты играют важнейшую роль в представлении и манипулировании данными на двоичном уровне. Побитовые операции...
Поднятие тревоги для долго выполняющихся методов в Spring Boot
Поднятие тревоги для долго выполняющихся методов в Spring Boot
Приходилось ли вам сталкиваться с требованиями, в которых вас могли попросить поднять тревогу или выдать ошибку, когда метод Java занимает больше...
Полный курс Java для разработчиков веб-сайтов и приложений
Полный курс Java для разработчиков веб-сайтов и приложений
Получите сертификат Java Web и Application Developer, используя наш курс.
0
1
40
1

Ответы 1

С точки зрения программиста, в отличие от дизайнера UX, не существует рекомендуемого количества Activity, которое нужно хранить в стеке за один раз.

Имейте в виду, что ОС Android может в условиях нехватки памяти останавливать и сохранять состояние экземпляра более старых действий в стеке. Если пользователь нажимает кнопку «Назад» и переходит к более старым действиям, их состояние экземпляра восстанавливается.

Поскольку все это управляется за вас, вам не нужно беспокоиться о том, что некоторое количество Activity в стеке потребляет ресурсы одновременно. Здесь самое важное - правильно запрограммировать обратные вызовы жизненного цикла, такие как onCreate(Bundle savedInstanceState), чтобы это управление памятью было прозрачным для вас как программиста.

Вы можете узнать больше о стеке в официальная документация

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

StackOverthrow 18.05.2018 22:32

@TKK спасибо, что поправили - я обновлю ответ

David Rawson 18.05.2018 22:33

К сожалению, в моем проекте, в котором я использую фреймворк FreshMvvm, всякий раз, когда размер стека достигает примерно 20 страниц (более или менее), я получаю OutOfMemory.

VahidShir 19.05.2018 10:45

@Vahid, ты уверен, что утечки памяти нет?

David Rawson 19.05.2018 10:46

Хм, я не могу сказать, что это невозможно.

VahidShir 19.05.2018 10:48

@vahid, может быть, ты сможешь найти его с помощью LeaksCanary. Или монитор Android, где показывает потребление памяти

David Rawson 19.05.2018 11:01

@DavidRawson Спасибо, я посмотрю на это, чтобы увидеть такую ​​возможность.

VahidShir 19.05.2018 11:42

Другие вопросы по теме