Продолжаем разбираться с работой taskAffinity и allowTaskReparenting
Напоминаю, что в приложении АР0003
Для Активности Е определены параметры:
taskAffinity="com.example.ap0004"
allowTaskReparenting="true"
Для Активности F определен параметр:
taskAffinity="com.example.ap0004"
Теперь поехали! Запускаем приложение АР0003
Запоминаем что задача 57 и жмем Start Activity E и вводим любой текст в поле
Видим что Активность Е была запущена так же в задаче 57. Теперь стек задачи 57 содержит ДВЕ Активности и имеет вид A-E.
Нажмем Info чтобы убедиться
Далее жмем HOME и запускаем приложение АР0004
Как видим приложение АР0004 запустилось не с Активности А. Фокус получила Активность Е приложения АР0003, которая перешла в задачу приложения АР0004, так как для нее родной определена задача приложения АР0004.
То есть Активность Е теперь находится в стеке задачи 58, а до этого была в стеке задачи 57. Стек задачи 58 теперь содержит КАК БЫ ДВЕ Активности А и Е. Но экземпляра Активности А физически в памяти пока не существует, а как бы предполагается ее наличие.
Посмотрим логи
Стек задачи 57 сейчас содержит одну Активность А
Нажмем Info чтобы убедиться
Все так и есть
Теперь жмем кнопку ОБРАТНО
Видим что мы попали в Активность А приложения АР0004, которое к тому же сообщает нам что оно было запущено впервые, то есть было только что сотворено. Смотрим логи
Из логов видно что это действительно так. То есть Активность А была создана по выходу из Активности Е. До этого ее в памяти не существовало, а была лишь ссылка на нее.
Выходим из обоих приложений и приступаем к следующему эксперименту.
Комментариев нет:
Отправить комментарий