Когда я прочитал официальный документ Android, я заметил, что система Android управляет действиями по задаче, но также использует задний стек для управления последовательностью действий. Поэтому я сомневаюсь, что система Android использует один задний стек для последовательности действий управления или каждой задачи, соответствующей заднему стекю?
Какова взаимосвязь между стеком "Задача" и "Назад"
Ответ 1
Задача - это просто совокупность всех созданных экземпляром действий приложения.
Например:
Если у нас есть приложение A с действиями A1, A2 и A3 и A2 открывается после того, как A1 и A3 будут открыты после A2, задача для приложения A будет выглядеть так:
|A3|
|A2|
|A1|
Теперь, если мы нажмем кнопку "Назад", A3 выскочит, и пользователю откроется A2. Задача для приложения A теперь будет выглядеть так:
|A2|
|A1|
Если мы нажмем назад, пока все действия не исчезнут, задача будет отброшена, и в следующий раз, когда мы запустим приложение A, Android создаст новую задачу с основным активностью приложения A в качестве первого действия.
Теперь откройте A1, A2 и A3 снова в том же порядке. Приложение. Задача теперь возвращается к:
|A3|
|A2|
|A1|
Теперь предположим, что мы нажимаем кнопку "Домой" и запускаем другое приложение "Приложение B.". Это приведет к тому, что приложение "Целая задача" будет сохранено в фоновом режиме и создаётся новая задача для приложения B с ее созданием основного действия. Итак, теперь у нас есть ситуация, которая выглядит так:
Application A Application B
|A3| |B1|
|A2|
|A1|
Если мы откроем больше действий в приложении B, они будут добавлены к нему так же, как приложение A:
Application A Application B
|A3| |B3|
|A2| |B2|
|A1| |B1|
Теперь, если мы вернемся к Application A, мы поставим задачу на передний план, а задача B будет сохранена в фоновом режиме.
Несколько экземпляров одного и того же действия могут также существовать в одной и той же задаче. Такое поведение можно контролировать.
Если в системе заканчивается память, она начнет убивать действия в фоновом режиме. Если все действия задачи исчезнут, задача также будет уничтожена. ( ОБНОВЛЕНИЕ: В соответствии с этим ответом от Dianne Hackborn, это не отдельные действия, а весь процесс, который содержит их, которые отбрасываются. Документы могут быть немного обманчивыми в этом отношении, и путаница еще предстоит решить. Я обновлю его, когда получу более полную информацию.)
Итак, чтобы подвести итог, задача - это просто набор действий приложения. Он используется для поддержки "стека" или "стоп-кадра" всех созданных действий приложения. Он сохраняется в фоновом режиме, когда все действия приложения находятся в фоновом режиме. Когда одно из этих действий возвращается на передний план, задача также возвращается, а задача текущей деятельности отбрасывается на задний план. Если системе нужна память, фоновые действия и задачи могут быть уничтожены.
Официальные документы дают намного больше информации, и я рекомендую прочитать их:
http://developer.android.com/guide/components/tasks-and-back-stack.html
Ответ 2
Официальный документ android читает,
Задача представляет собой набор действий, с которыми пользователи взаимодействуют, когда выполняя определенную работу. Действия расположены в стеке ( "back stack" ), в порядке открытия каждой активности.
Я согласен, что это довольно запутанно. Однако, читая весь документ снова и снова, становится ясно.
Задача управляет действиями с использованием обратного стека. Каждая задача имеет свой собственный задний стек в дополнение к некоторой другой информации и/или данным. Задача управляет действиями, используя его обратно стек.
Пожалуйста, поправьте меня, если я ошибаюсь.
Ответ 3
Я действительно не понимаю, к чему вы пытаетесь добраться, но действия в системе управляются как стек деятельности. Когда начинается новая активность, она помещается в верхнюю часть стека и становится текущей. Предыдущее действие всегда остается ниже этого в стеке и не будет возвращаться на передний план до тех пор, пока не будет завершено новое действие.
Ответ 4
Задача - это коллекция действий, и она использует Back Stack, чтобы упорядочить их (действия) с порядком, в котором они были открыты.
Каждое Приложение использует свою собственную задачу, и эта задача использует собственный Back Back.