Напоминаю, что в приложении АР0003
Для Активности F определен параметр:
taskAffinity="com.example.ap0004"
Итак запускаем приложение АР0003
И жмем клавишу Start Act F и вводим любой текст в поле
Как видим Активность F была запущена в той же 71 задаче что и Активность А.
Теперь жмем кнопку HOME и запускаем приложение АР0004
Как видим, Активность F не перешла в задачу приложения АР0004, так как у нее нет параметра allowTaskReparenting="true". То есть поведение точно такое как описано в альма-матер.
Сейчас в стеке задачи 71 две Активности и стек имеет вид A-F, а в стеке задачи 76 одна Активность А.
Нажмем Info чтобы убедиться
Выходим из обоих приложений и заново запускаем АР0003
Жмем кнопку Start Activity F NewTask и вводим любой текст в поле
Видим что в этот раз Активность F сразу была запущена в новой задаче, так как к интенту был добавлен флаг FLAG_ACTIVITY_NEW_TASK.
То есть у нас теперь две задачи 77 и 78, в каждой из которых по одной Активности, А и F соответственно. Нажмем Info чтобы в этом убедиться
Теперь жмем кнопку HOME и запускаем приложение АР0004
Приложение АР0004 было запущено с Активности F, которая сейчас является единственной в задаче этого приложения с ID 78. Активность F нам сообщила что она уже была запущена, что так и есть, ведь мы ее запустили из приложения АР0003.
Теперь еще следует обратить внимание на лог выведенный по кнопке Info. В задаче 78 нет Активности А, как было в прошлых случаях. То есть если мы сейчас нажмем кнопку ОБРАТНО, то просто выйдем из приложения АР0004 (задача 78).
Давайте сделаем это и посмотрим лог
На это отличие в поведении так же стоит обратить внимание.
Сейчас выходим из приложений АР0004 и АР0003. И заново запускаем приложение АР0004
Теперь жмем кнопку HOME и запускаем приложение АР0003
И так у нас уже есть приложение АР0004 работающее в задаче 80. Теперь жмем Start Activity F NewTask
Активность F запустилась в задаче 80 и теперь стек задачи 80 содержит две Активности А и F. А стек задачи 81 одну Активность А.
Чтобы убедиться в этом нажмем Info
Так же произошло переключение на стек задачи 80. То есть если мы сейчас нажмем кнопку ОБРАТНО мы не попадем в задачу 81 из которой была запущена Активность F. А попадем в Активность А задачи 80.
Жмем ОБРАТНО
И так мы попали в Активность А приложения АР0004 задачи 80.
Теперь еще раз жмем ОБРАТНО
И попадаем в Активность А приложения АР0003 задачи 81.
Жмем еще раз ОБРАТНО и выходим из приложения АР0003.
На этом рассмотрение taskAffinity мы пока закончим. И перейдем к рассмотрению темы чистки стека.
Комментариев нет:
Отправить комментарий