17 октября 2014 г.

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

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

Для этого была проведена очередная мутация приложений АР0003 и АР0004. В приложение АР0003 была добавлена Активность L с параметром excludeFromRecents="true". А в приложении АР0004 в Активности С была добавлена кнопка запуска Активности L с флагом FLAG_ACTIVITY_NEW_TASK, чтобы она запускалась в новой задаче и была для нее корневой.

Запускаем приложение АР0004 и сперва посмотрим как ведет себя Активность в новой задаче без рассматриваемого нами параметра

ER0001

Запоминаем номер задачи 29 и жмем Start B AP0003 NEW TASK flag

ER0002

Активность В была запущена уже в задаче 30, как и должно было быть

Теперь нажмем кнопку ДОМОЙ чтобы увидеть рабочий стол и затем опять будем удерживать кнопку ДОМОЙ несколько секунд чтобы увидеть список недавно открытых приложений

ER0003

И так мы видим в этом списке оба приложения АР0003 и АР0004

Переключимся в АР0003 и выйдем из него нажав кнопку ОБРАТНО, а затем переключимся в приложение АР0004

ER0004

Далее запустим последовательно Активности В и С.

ER0005

ER0006

И нажмем Start L AP0003 NewTask

ER0007

Активность L была запущена в новой задаче 31 и она является для нее корневой сейчас. Теперь нажмем кнопку ДОМОЙ чтобы увидеть рабочий стол и затем удержав снова кнопку домой пару секунд выведем список недавно открытых задач.

ER0008

Как видим Активности L приложения АР0003 нет в списке недавно запущенных задач.

Но это не значит что этой задачи не существует, если мы выйдем из этого списка и запустим приложение АР0003 с рабочего стола, то увидим наше приложение

ER0009

Которое нам сообщит что оно уже было запущено. Теперь нажмем Start Activity A

ER0010

И снова кнопку ДОМОЙ и выведем список недавно открытых задач

ER0011

И ооооопс мы снова увидели приложение АР0003 в списке недавних задач. И опять поведение не такое как было описано в альма-матер. То есть в списке недавних задач не было видно только той Активности для которой был установлен параметр excludeFromRecents="true". То есть Активности L. Хотя ожидалось, как о том говориться в описании что не будет видна вся задача для которой эта Активность является корневой.

Переключимся в приложение АР0003 и нажмем кнопку ОБРАТНО

ER0009

Опять увидим нашу Активность L

Жмем ДОМОЙ и выводим список задач

ER0012

И оооопс опять увидели приложение АР0003 и его Активность L в списке недавних задач.

Еще один сюрприз от Андроид Улыбка

Возможно, чтобы все работало как было описано в альма-матер, Активность с этим параметром должна быть главной Активностью приложения. Но экспериментировать с этим просто лень.

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

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