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

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

Продолжаем разбираться с работой taskAffinity и allowTaskReparenting

Напоминаю, что в приложении АР0003

Для Активности Е определены параметры:
taskAffinity="com.example.ap0004"
allowTaskReparenting="true"

Для Активности F определен параметр:
taskAffinity="com.example.ap0004"

Теперь поехали! Запускаем приложение АР0003

TA0001

Запоминаем что задача 57 и жмем Start Activity E и вводим любой текст в поле

TA0002

Видим что Активность Е была запущена так же в задаче 57. Теперь стек задачи 57 содержит ДВЕ Активности и имеет вид A-E.

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

TA0003

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

TA0004

Как видим приложение АР0004 запустилось не с Активности А. Фокус получила Активность Е приложения АР0003, которая перешла в задачу приложения АР0004, так как для нее родной определена задача приложения АР0004.

То есть Активность Е теперь находится в стеке задачи 58, а до этого была в стеке задачи 57. Стек задачи 58 теперь содержит КАК БЫ ДВЕ Активности А и Е. Но экземпляра Активности А физически в памяти пока не существует, а как бы предполагается ее наличие.

Посмотрим логи

TA0005

Стек задачи 57 сейчас содержит одну Активность А

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

TA0006

Все так и есть

Теперь жмем кнопку ОБРАТНО

TA0007

Видим что мы попали в Активность А приложения АР0004, которое к тому же сообщает нам что оно было запущено впервые, то есть было только что сотворено. Смотрим логи

TA0008

Из логов видно что это действительно так. То есть Активность А была создана по выходу из Активности Е. До этого ее в памяти не существовало, а была лишь ссылка на нее.

Выходим из обоих приложений и приступаем к следующему эксперименту.

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

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