16 мая 2014 г.

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

Продолжаем разбираться с launchMode="singleInstance". Напомню что в приложении AP0004 Активность Е имеет параметр запуска launchMode="singleInstance".

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

И так запускаем приложение AP0004 и далее последовательно Активности B-C-D

S0001

S0002

S0003

S0004

В задаче 147 сейчас ЧЕТЫРЕ Активности и стек задачи имеет вид A-B-C-D.

Жмем Start Activity E

S0005

Тут тоже все обычно, все как и положено, Активность Е запустилась в новой задаче 148.

Введем текст в поле и нажмем Start Activity A.

S0006

S0007

Активность А запустилась в задаче 147, то есть в задаче приложения AP0004, которое мы запустили в начале. На это тоже следует обратить внимание. Сейчас в задаче 147 ПЯТЬ Активностей и стек имеет вид A-B-C-D-A.

Если нажать кнопку обратно, то как вы помните мы уже не попадем в Активность Е, из которой была запущена текущая Активность А, а попадем в Активность D, поскольку Активность Е не находится в стеке Активностей задачи 147.

На всякий случай для пущего понимания нажмем кнопку Info и глянем лог

S0008

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

S0009

Мы вернулись в Активность D, которая сообщила нам что она уже была запущена и что сейчас в нашей задаче 147 ЧЕТЫРЕ Активности и стек имеет вид A-B-C-D.

Жмем три раза кнопку ОБРАТНО

S0010

S0011

S0012

И теперь если в Активности А мы нажмем кнопку обратно, то попадем в Активность Е. Это происходит только при условии что мы ни когда, не нажимали кнопку HOME, которая меняет порядок задач, переключаясь на задачу домашнего экрана. Жмем ОБРАТНО

S0013

Видим нашу Активность Е которая находится в таске 148. Если сейчас нажмем еще раз ОБРАТНО, то полностью выйдем из всех Активностей приложения AP0004. Что мы и сделаем.
Затем снова запустим приложение AP0004, чтобы продемонстрировать еще раз, что происходит при нажатии кнопки HOME, когда Активность Е уже запущена.

Запускаем AP0004 и последовательно запускаем активности B-C-D (Активность А у нас запускается при старте приложения, это я так для тех кто в таке).

S0014

S0015

S0016

S0017

Все как обычно, просто таск уже другой. Теперь запустим Активность Е и введем в нее любой текст

S0018

Активность Е запустилась в новом таске с ID=150. Теперь нажмем кнопку HOME

S0019

И снова запустим приложение AP0004. Можно ожидать что мы попадем в Активность Е, но не тут то было! Запускаем AP0004

S0020

И попадаем в таск 149, то есть в таск приложения AP0004. В Активность Е мы не попали, потому что, хотя она и работает в процессе приложения AP0004, но работает в своей задаче.
Теперь чтобы попасть в Активность Е, нам надо будет нажать снова Start Activity E

S0021

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

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

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