Продолжаем исследовать поведение FLAG_ACTIVITY_CLEAR_TOP совместно FLAG_ACTIVITY_NEW_TASK.
Запускаем приложение АР0003 и последовательно запускаем Активности A-B-C-D и в текстовом поле Активности D вводим какой-нибудь текст
И далее жмем Start Activity A
Сейчас стек задачи 27 содержит ПЯТЬ Активностей и имеет вид A-B-C-D-A.
Теперь жмем кнопку HOME и запускаем приложение AP0004
Обращаем внимание что оно запустилось в своем таске 28 и далее жмем кнопку Start Activity B
И так в стеке задачи 28 у нас сейчас две Активности и он имеет вид A-B.
Теперь вспоминаем что в Активности D задачи 27 в текстовом поле мы ввели текст, чтобы понять будет ли запущена уже существующая Активность или создана новая.
Жмем кнопку Start D AP0003 NewTaskClearTop
И мы видим что произошло переключение на Активность D задачи 27 и была вызвана уже существующая Активность D и ей передан фокус, а находящаяся над ней в стеке Активность А была уничтожена. И сейчас стек задачи 27 содержит четыре Активности и имеет вид A-B-C-D.
Посмотрим логи
Ну и нажмем Info
В данном случае опять произошло переключение на стек задачи 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;
}
Комментариев нет:
Отправить комментарий