И рассмотрим еще один частный случай использования allowTaskReparenting и taskAffinity.
Запускаем приложение АР0004
Запоминаем что это задача 45 и жмем Start G AP0003 и вводим текст в Активности G
Видим что Активность G была запущена в задаче 45
Теперь жмем Start Activity A
Теперь задача 45 содержит ТРИ Активности и ее стек имеет вид A-G-A. Причем первая Активность А принадлежит приложению АР004, а верхняя Активность А приложению АР0003.
Нажмем Info чтобы в этом убедиться
Запоминаем что Активность G у нас сейчас находится посредине в стеке между двумя Активностями А.
Жмем кнопку HOME и запускаем приложение АР0003
Видим что приложение АР0003 было запущено не с Активности А, как и в предыдущих двух постах, а с существующей Активности G этого приложения. И что Активность G сейчас находится в стеке задачи 46. То есть она была выдернута из середины стека задачи 45 и перемещена в задачу своего приложения АР0003. Таким образом стек задачи 45 сейчас содержит ДВЕ Активности А и имеет вид A-A. А стек задачи 46 содержит КАК БЫ ДВЕ АКТИВНОСТИ А и G и имеет вид A-G. Как бы это потому, что Активность А приложения АР0003 еще не запущена и ее реально нет в стеке, но есть как бы ссылка на то что она должна быть запущена.
Жмем кнопку Info чтобы в этом убедиться
Все так и есть.
Теперь если нажмем кнопку ОБРАТНО, то увидим Активность А приложения АР0003 в задаче 46 и там будет указано что она запущена впервые! На это тоже надо обратить внимание если в предыдущих постах не обращали.
Смотрим логи
Видим что Активность А была создана только сейчас, то есть по нажатию на кнопку ОБРАТНО.
Жмем ОБРАТНО еще раз и выходим из задачи 46. Затем запускаем (переходим) в приложение АР0004 задача 45.
Обращаем внимание что это уже задача 45 и что Активность А уже была запущена.
Жмем ОБРАТНО и попадаем в Активность А приложения АР0004 задача 45
Так же видим что эта Активность А уже была запущена.
Жмем ОБРАТНО и выходим из задачи 45.
И так еще один примерчик был рассмотрен
Комментариев нет:
Отправить комментарий