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




С точки зрения программиста, в отличие от дизайнера UX, не существует рекомендуемого количества Activity, которое нужно хранить в стеке за один раз.
Имейте в виду, что ОС Android может в условиях нехватки памяти останавливать и сохранять состояние экземпляра более старых действий в стеке. Если пользователь нажимает кнопку «Назад» и переходит к более старым действиям, их состояние экземпляра восстанавливается.
Поскольку все это управляется за вас, вам не нужно беспокоиться о том, что некоторое количество Activity в стеке потребляет ресурсы одновременно. Здесь самое важное - правильно запрограммировать обратные вызовы жизненного цикла, такие как onCreate(Bundle savedInstanceState), чтобы это управление памятью было прозрачным для вас как программиста.
Вы можете узнать больше о стеке в официальная документация
Android не уничтожает отдельные действия в backstack, только весь стек, когда задача находится в фоновом режиме. Но документы говорят, что это возможно, поэтому в какой-то будущей версии это возможно. Параметр разработчика «не сохранять действия» заставляет его вести себя так, как разрешено документацией.
@TKK спасибо, что поправили - я обновлю ответ
К сожалению, в моем проекте, в котором я использую фреймворк FreshMvvm, всякий раз, когда размер стека достигает примерно 20 страниц (более или менее), я получаю OutOfMemory.
@Vahid, ты уверен, что утечки памяти нет?
Хм, я не могу сказать, что это невозможно.
@vahid, может быть, ты сможешь найти его с помощью LeaksCanary. Или монитор Android, где показывает потребление памяти
@DavidRawson Спасибо, я посмотрю на это, чтобы увидеть такую возможность.
Добавляя к приведенному ниже ответу, единственное, что вас может беспокоить по поводу памяти, - это onSaveInstanceState, поэтому держите его как минимум, также незавершенные AsyncTasks обычно приводят к сбою состояния Activity. Просмотры будут уничтожены.