Как ведут себя дочерние действия единой задачи (Действие A), когда (A) активируется из другой Задачи - PullRequest
0 голосов
/ 16 января 2012

Я должен быть честным, это вопрос, который в настоящее время является академическим, но я много искал и не могу найти никого, кто описывает ответ. Прошлой ночью я даже спал ужасным ночным сном, поскольку это проявлялось в том, что я постоянно мечтал найти белого щенка, но я всегда не мог его найти. Итак, вы видите, это технически и умственно довольно серьезная проблема.

Итак,

Допустим, у меня есть стек задач из 3-х действий, A, B, C. A имеет режим запуска "singleTask", и давайте сделаем режим запуска действий B и C "стандартным".

Итак, Задача 1:

A -> B -> C

Допустим, у меня есть вторая задача, которая состоит всего из двух действий: X (корневая операция с режимом запуска «стандартный») и 2-й операции, которая фактически является операцией A.

Итак, задача 2 -

X -> A

** Вопрос: Когда действие X вызывает действие A (которое определяется режимом запуска "singleTask", что происходит с потомками действия A в стеке задач 1 (т. Е. B и C) ??? Когда я вызываю действие A из действия X, получаю ли я обратно стек: X -> A -> B -> C (т.е. активность C отображается)

Или

X -> A (то есть предыдущие дочерние элементы задачи A удаляются с передней части заднего стека)

Кроме того, независимо от ответа, приведенного выше, если бы я должен был нажимать клавишу «НАЗАД» на всем пути назад через стек для Задачи 2, что происходит с исходным стеком Задачи 1. Теперь оно сожрано заданием 2 и больше не существует?

Я хочу пойти на пробежку сегодня, поэтому мысль о другой ночи в поисках белого щенка довольно удручающая.

Любой ответ или ссылка помогут.

Пример, приведенный в разделе Android Dev, описывает, как действия предков действия "singleTask" "объединяются" с задним стеком Задачи, которая вызывает действие "singleTask", но, к сожалению, не описывает, что произойдет с дети деятельности "SingleTask".

Большое спасибо заранее, дамы и господа.

Paul.

1 Ответ

0 голосов
/ 27 января 2012

** Вопрос: Когда действие X вызывает действие A (которое определяется режимом запуска "singleTask", что происходит с потомками действия A в стеке задач 1 (т. Е. B и C) ??? Когда я вызываюВ действии A из действия X я получаю задний стек: X -> A -> B -> C (т.е. отображается действие C)

Или X -> A (то есть предыдущие дочерние элементы TaskА удаляются из передней части заднего стека)

Ни того, ни другого не происходит. Задачи не перепутаны, действие может перейти к задаче с таким же сродством.

Так что будеттеперь это будет две задачи, задача 1 будет иметь только действие A, а задача 2 будет иметь только действие X. Действия B и C будут удалены из задачи 1.

Хотя, как обсуждалось по следующим ссылкам

1. Android: ошибка в launchMode = «singleTask»? -> стек активности не сохраняется ,

2. Создание действия singleTask разрушает стек после возврата? и

3. Выпуск 11160: Поведение ЛаunchMode = «singleTask» не так, как описано ,

, если есть ошибка, тогда Задача 1 должна была просто переместиться на передний план с действиями B и C.

, если ямы должны были «НАЗАД» ключом вернуться назад через стек для Задачи 2, что происходит со стеком исходной Задачи 1.Теперь оно сожрано заданием 2 и больше не существует?

Итак, теперь поведение клавиши «Назад» будет соответствовать новым задачам, как указано в Задачи и НазадСтек

Когда пользователь нажимает кнопку НАЗАД, текущее действие извлекается из верхней части стека (действие уничтожается), а предыдущее действие возобновляется (предыдущее состояние его пользовательского интерфейса).восстанавливается).Действия в стеке никогда не переставляются, только выталкиваются и извлекаются из стека - помещаются в стек, когда запускается текущим действием, и выталкиваются, когда пользователь покидает его с помощью кнопки BACK.Таким образом, задний стек работает как структура объекта «последний пришел, первый вышел».

Надеюсь, это поможет.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...