Ответ 1
После перехода с A- > B у вас есть 2 задачи: первая содержит A, вторая содержит B. B находится сверху, а A ниже.
Теперь при переходе с B- > C Android запускает активность C в задачу, содержащую A (она не может запустить ее в задачу, содержащую B, потому что B определяется как "singleInstance" , поэтому он запускает ее в задачу, которая имеет ту же "задачуAffinity" , в этом случае задача, содержащая A). Для этого Android выводит задачу, содержащую A на передний план. Теперь у вас есть две задачи: задача, содержащая A и C спереди, а вторая - B ниже.
Теперь вы нажимаете клавишу BACK, которая завершает действие C и возвращается к активности ниже, чем в задаче, а именно C. У вас все еще есть 2 задачи: одна, содержащая C спереди, и та, которая содержит B ниже этого.
Теперь вы снова нажимаете кнопку BACK. Это завершает работу A (и тем самым завершает задачу, которая удерживает A), и возвращает предыдущую задачу в стеке задач, а именно задание, содержащее B. Теперь у вас есть 1 задача: задача, содержащая B.
В вашем другом сценарии, после перехода с A- > B- > C, вы начинаете с двух задач: Задача, содержащая A и C спереди, и второй, содержащий B ниже.
Теперь вы нажимаете кнопку HOME. Теперь вы говорите, что вы "вернетесь к приложению долгое нажатие" . Это не совсем правильно. Вы не можете вернуться в приложение. Вы можете только "вернуться к задаче". Но у вас есть две разные задачи: если вы делаете длинную печать, вы должны увидеть две задачи. У них, вероятно, есть один и тот же значок (если вы не указали другой значок для активности B), чтобы вы не могли отличить их друг от друга. Если вы выберите задачу, содержащую A и C, то эта задача будет перенесена на передний план с активностью C сверху. Если вы сейчас нажмете клавишу BACK, операция C завершится, и под ней будет показана активность A. Если вы снова нажмете клавишу BACK, операция A будет завершена, и вы вернетесь на экран HOME. Задача, содержащая B, по-прежнему находится в списке недавних задач, но больше не находится в стеке задач под вашей другой задачей, потому что когда вы нажимаете кнопку HOME, это похоже на возврат к нулю. Вы начинаете все заново. У вас нет активных задач, поэтому все задачи находятся в строке, они не находятся в стеке и иерархии нет.
Кроме того, в вашем вопросе вы используете фразу "выходит из приложения" . Это также не совсем правильно. Единственное, что нажала кнопка BACK, - это завершить текущую деятельность. Если текущая активность является единственным действием в задаче, она также завершает эту задачу. Однако это не означает "выйти из приложения". Особенно в вашем случае, так как ваше приложение действительно существует в двух отдельных задачах.
Надеюсь, это ясно.