Какова взаимосвязь между стеком "Задача" и "Назад"

Когда я прочитал официальный документ 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.