По умолчанию действия начинаются заново каждый раз, когда вы открываете их с вызовом startActivity()
.Если ваша активность запускает новую активность, она по существу будет помещена в стек активности и будет приостановлена во время начала новой активности.Если пользователь нажмет кнопку «Назад», последнее действие в стеке возобновится с момента его остановки (хотя я не думаю, что это гарантировано на 100%, поскольку Android будет убивать задачи, поскольку ему нужны ресурсы, поэтому я бы не стал это предполагать).
Итак, если у вас есть эта цепочка здесь:
A->B->C->D
, где каждая буква представляет новое действие без каких-либо флагов или изменений.
Если пользователь находится на D
и нажимает кнопку back
, C
возобновится.D
выскочил из стека.Если пользователь решит снова перейти к операции D
, новая D
запустится так, как будто этого не произошло (при условии, что вы не сохранили никаких постоянных переменных).Если пользователь нажимает back
дважды, приложение будет в B
, где C
и D
не пропали.
Вы можете манипулировать этой цепочкой с помощью различных флагов, таких как singleInstance
, чтобы сохранитьсостояние или noHistory
, чтобы гарантировать, что оно не будет помещено в стек (то есть оно будет пропущено, если пользователь нажмет back
).
Очень подробное описание различных атрибутов