30 сентября 2014 г.

Задачи и обратный стек (Tasks and back stack). Часть 26 (практика)

И рассмотрим еще один частный случай использования allowTaskReparenting и taskAffinity.

Запускаем приложение АР0004

TA0012

Запоминаем что это задача 45 и жмем Start G AP0003 и вводим текст в Активности G

TA0013

Видим что Активность G была запущена в задаче 45

Теперь жмем Start Activity A

TA0014

Теперь задача 45 содержит ТРИ Активности и ее стек имеет вид A-G-A. Причем первая Активность А принадлежит приложению АР004, а верхняя Активность А приложению АР0003.

Нажмем Info чтобы в этом убедиться

TA0015

Запоминаем что Активность G у нас сейчас находится посредине в стеке между двумя Активностями А.

Жмем кнопку HOME и запускаем приложение АР0003

TA0016

Видим что приложение АР0003 было запущено не с Активности А, как и в предыдущих двух постах, а с существующей Активности G этого приложения. И что Активность G сейчас находится в стеке задачи 46. То есть она была выдернута из середины стека задачи 45 и перемещена в задачу своего приложения АР0003. Таким образом стек задачи 45 сейчас содержит ДВЕ Активности А и имеет вид A-A. А стек задачи 46 содержит КАК БЫ ДВЕ АКТИВНОСТИ А и G и имеет вид A-G. Как бы это потому, что Активность А приложения АР0003 еще не запущена и ее реально нет в стеке, но есть как бы ссылка на то что она должна быть запущена.

Жмем кнопку Info чтобы в этом убедиться

TA0017

Все так и есть.

Теперь если нажмем кнопку ОБРАТНО, то увидим Активность А приложения АР0003 в задаче 46 и там будет указано что она запущена впервые! На это тоже надо обратить внимание если в предыдущих постах не обращали.

TA0018

Смотрим логи

TA0019

Видим что Активность А была создана только сейчас, то есть по нажатию на кнопку ОБРАТНО.

Жмем ОБРАТНО еще раз и выходим из задачи 46. Затем запускаем (переходим) в приложение АР0004 задача 45.

TA0020

Обращаем внимание что это уже задача 45 и что Активность А уже была запущена.

Жмем ОБРАТНО и попадаем в Активность А приложения АР0004 задача 45

TA0021

Так же видим что эта Активность А уже была запущена.

Жмем ОБРАТНО и выходим из задачи 45.

И так еще один примерчик был рассмотрен

Комментариев нет:

Отправить комментарий