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

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

Продолжаем исследовать поведение FLAG_ACTIVITY_CLEAR_TOP совместно FLAG_ACTIVITY_NEW_TASK.

Запускаем приложение АР0003 и последовательно запускаем Активности A-B-C-D и в текстовом поле Активности D вводим какой-нибудь текст

NTCT0001

NTCT0002

NTCT0004

NTCT0005

И далее жмем Start Activity A

NTCT0006

Сейчас стек задачи 27 содержит ПЯТЬ Активностей и имеет вид A-B-C-D-A.

Теперь жмем кнопку HOME и запускаем приложение AP0004

NTCT0007

Обращаем внимание что оно запустилось в своем таске 28 и далее жмем кнопку Start Activity B

NTCT0008

И так в стеке задачи 28 у нас сейчас две Активности и он имеет вид A-B.

Теперь вспоминаем что в Активности D задачи 27 в текстовом поле мы ввели текст, чтобы понять будет ли запущена уже существующая Активность или создана новая.

Жмем кнопку Start D AP0003 NewTaskClearTop

NTCT0009

И мы видим что произошло переключение на Активность D задачи 27 и была вызвана уже существующая Активность D и ей передан фокус, а находящаяся над ней в стеке Активность А была уничтожена. И сейчас стек задачи 27 содержит четыре Активности и имеет вид A-B-C-D.

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

NTCT0010

Ну и нажмем Info

NTCT0011

В данном случае опять произошло переключение на стек задачи 27

Ну и на последок код как приметь два флага к интенту

public void onClickStartD0004 (View v){
Intent startDAP0004 = new Intent("AP0004_ActD");
startDAP0004.addFlags(Intent.FLAG_ACTIVITY_CLEAR_TOP);
startDAP0004.addFlags(Intent.FLAG_ACTIVITY_NEW_TASK);
startActivity(startDAP0004);
NextAct = true;
}

public void onClickStartD0003 (View v){
Intent startDAP0003 = new Intent("AP0003_ActD");
startDAP0003.addFlags(Intent.FLAG_ACTIVITY_CLEAR_TOP);
startDAP0003.addFlags(Intent.FLAG_ACTIVITY_NEW_TASK);
startActivity(startDAP0003);
NextAct = true;
}

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

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