Предположим, что приложение уже имеет стек действий, а затем из контекста приложения запускается новое действие с FLAG_ACTIVITY_NEW_TASK. И это происходит в том же процессе, то есть внутри приложения, например:
AppContext -> A(FLAG_ACTIVITY_NEW_TASK) -> B -> C; AppContext -> D(FLAG_ACTIVITY_NEW_TASK)
Согласно документации у нас сейчас 2 задачи:
Task 1: A, B, C; Task 2: D
Из документа следует, что для пользователя теоретически возможно переключиться либо на действие C, либо на действие D независимо, поскольку они принадлежат к различным задачам. Однако на практике я не смог переключиться на действие C - оно всегда переключалось на D.
Мой вопрос:
Правда ли, что если задачи запущены в одном и том же процессе с FLAG_ACTIVITY_NEW_TASK, задачи не являются независимыми, и пользователь может переключиться только на самую верхнюю операцию в самой главной задаче?
Если ответ «нет» , то как пользователь может перейти к заданию 1?
UPDATE
Ответ: Нет
Задачи являются независимыми, и пользователь может самостоятельно переключаться между своими действиями, фактически имея две активности вашего приложения на вершине стека. Я только нашел вариант использования, спустя три года после того, как задал оригинальный вопрос.
Наше приложение регистрируется как обработчик для схемы URL (например, market://xxx.yyy/zzz
). Теперь давайте представим, что пользователь запустил приложение с помощью средства запуска, занялся чем-то посередине (действия A, B, C
) и остановился. Затем в браузере пользователь нажимает на URL, чтобы запустить нашу другую деятельность (операция D
). Это приводит к двум задачам одновременно: действия A, B, C
(с C
сверху) и действие D
. Пользователь может переключаться между этими двумя действиями через историю задач.
Забавно, что Activity C отображается в истории задач с собственным значком приложения, но Activity D отображается с помощью значка браузера. Независимо от того, оба могут быть переключены на.
Кроме того, обе задачи A-B-C
и D
выполняются в одном и том же процессе. Это означает, что все одиночные объекты и статические данные совместно используются ими. В результате они могут испортить состояние друг друга, если не принять меры предосторожности.