Как работает андроид: noHistory = "true"?
Предположим, что у меня есть базовое действие с меню, когда я нажимаю на пункт меню A, он переходит в действие A. Я снова открываю меню и перехожу к B. Из BI вернитесь в A, а назад и четвертый как это какое-то время.
Таким образом, стек будет A, B, A, B, A, B,....
И когда я нажимаю кнопку "Назад", он возвращается назад через стек, как ожидалось.
Однако, скажем, мне не нужна эта функциональность, поэтому я добавляю к моему манифесту android:noHistory="true"
. Поэтому, когда я нажимаю кнопку "Назад", он выходит из приложения вместо того, чтобы идти через стек.
Теперь иллюзия заставляет это казаться, скажем, если я нахожусь в действии A, я использую меню и перехожу к активности B, стек будет просто B, потому что я не могу вернуться к A.
Но, используя noHistory="true"
, существует ли истинный стек A, B, A, B, A, B? Скорее, это каждый вызов активности с помощью меню, создающего новую копию этого действия, но пользователь не может его увидеть? Будет ли это причиной проблем с ресурсами?
Или, когда noHistory="false"
, кнопка возврата снова вызывает что-то вроде startAcitvity(intent)
снова или происходит через каждую новую копию, которая была создана?
Я беспокоюсь о проблемах с ресурсами и не замедляю работу устройства Android.
Ответы
Ответ 1
Из docs о noHistory
:
Значение "истина" означает, что активность не оставит исторической трассировки. Он не останется в стеке действий для задачи, поэтому пользователь не сможет вернуться к нему.
Относительно вашего вопроса:
существует ли истинный стек A, B, A, B, A, B?
Документы указывают на отсутствие.
Я беспокоюсь о проблемах с ресурсами и не замедляю работу устройства Android.
Вам действительно не нужно беспокоиться об этом. ОС должна обрабатывать очистку действий, когда память становится низкой. Скорее всего, плохое использование растровых изображений или логики в ваших действиях приведет к замедлению производительности.