Продолжаем разбираться с launchMode="singleInstance". Напомню что в приложении AP0004 Активность Е имеет параметр запуска launchMode="singleInstance".
И так я поправил работу счетчика. И по ходу выяснил еще несколько интересных особенностей работы Активности в этом режиме запуска.
И так запускаем приложение AP0004 и далее последовательно Активности B-C-D
В задаче 147 сейчас ЧЕТЫРЕ Активности и стек задачи имеет вид A-B-C-D.
Жмем Start Activity E
Тут тоже все обычно, все как и положено, Активность Е запустилась в новой задаче 148.
Введем текст в поле и нажмем Start Activity A.
Активность А запустилась в задаче 147, то есть в задаче приложения AP0004, которое мы запустили в начале. На это тоже следует обратить внимание. Сейчас в задаче 147 ПЯТЬ Активностей и стек имеет вид A-B-C-D-A.
Если нажать кнопку обратно, то как вы помните мы уже не попадем в Активность Е, из которой была запущена текущая Активность А, а попадем в Активность D, поскольку Активность Е не находится в стеке Активностей задачи 147.
На всякий случай для пущего понимания нажмем кнопку Info и глянем лог
Теперь нажмем кнопку ОБРАТНО
Мы вернулись в Активность D, которая сообщила нам что она уже была запущена и что сейчас в нашей задаче 147 ЧЕТЫРЕ Активности и стек имеет вид A-B-C-D.
Жмем три раза кнопку ОБРАТНО
И теперь если в Активности А мы нажмем кнопку обратно, то попадем в Активность Е. Это происходит только при условии что мы ни когда, не нажимали кнопку HOME, которая меняет порядок задач, переключаясь на задачу домашнего экрана. Жмем ОБРАТНО
Видим нашу Активность Е которая находится в таске 148. Если сейчас нажмем еще раз ОБРАТНО, то полностью выйдем из всех Активностей приложения AP0004. Что мы и сделаем.
Затем снова запустим приложение AP0004, чтобы продемонстрировать еще раз, что происходит при нажатии кнопки HOME, когда Активность Е уже запущена.
Запускаем AP0004 и последовательно запускаем активности B-C-D (Активность А у нас запускается при старте приложения, это я так для тех кто в таке).
Все как обычно, просто таск уже другой. Теперь запустим Активность Е и введем в нее любой текст
Активность Е запустилась в новом таске с ID=150. Теперь нажмем кнопку HOME
И снова запустим приложение AP0004. Можно ожидать что мы попадем в Активность Е, но не тут то было! Запускаем AP0004
И попадаем в таск 149, то есть в таск приложения AP0004. В Активность Е мы не попали, потому что, хотя она и работает в процессе приложения AP0004, но работает в своей задаче.
Теперь чтобы попасть в Активность Е, нам надо будет нажать снова Start Activity E
Она нам сообщает что уже была запущена, что собственно правда. Теперь жмем пять раз ОБРАТНО и выходим из приложения AP0004.
Комментариев нет:
Отправить комментарий