22 октября 2014 г.

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

Рассмотрим работу флага запуска Активности FLAG_ACTIVITY_CLEAR_WHEN_TASK_RESET. Данный флаг помечает вызываемую Активность так, что следующем вызове задачи из домашнего экрана, эта Активность и все вышерасположенные будут закрыты. В качестве примера можно привести почтовую программу. Вы открываете письмо, щелкаете на вложение и переходите в некую программу просмотра вложения. Затем сворачиваете приложение. Когда вы в следующий раз запустите почту, вы увидите верхнюю Активность задачи, т.е. просмотр вложения. А если вызывать просмотр вложения с вышеуказанным флагом, то при следующем запуске почты просмотр вложения будет закрыт и вы увидите письмо.

Приложение АР0003 пережило очередной этап эволюции. В Активность С добавлена кнопка запуска Активности В из приложения АР0004 с данным флагом.

Запускаем приложение АР0003

WTR0001

Запускаем Активность В

WTR0002

И затем С

WTR0003

Теперь стек задачи 92 содержит ТРИ Активности и имеет вид А-В-С. Жмем кнопку Start Activity B AP0004 CLEAR_WHEN_TASK_RESET.

WTR0004

Теперь стек задачи 92 содержит ЧЕТЫРЕ Активности и имеет вид А-В-С-В. Причем первые три Активности принадлежат приложению АР0003 и последняя, верхняя Активность В приложению АР0004.

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

WTR0005

WTR0006

Теперь стек задачи 92 содержит ШЕСТЬ Активностей и имеет вид А-В-С-В-С-D. Причем первые три принадлежат приложению АР0003 и вторые три приложению АР0004. Нажмем Info чтобы в этом убедиться.

WTR0007

Теперь жмем кнопку ДОМОЙ и снова запускаем приложение АР0003 с домашнего экрана

WTR0008

Мы видим нашу Активность С из которой мы запускали Активность В приложения АР0004. Это произошло потому, что все верхние Активности начиная с В были уничтожены. В следствии работы флага FLAG_ACTIVITY_CLEAR_WHEN_TASK_RESET.

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

WTR0009

Из логов видно, что во время вызова приложения АР0003 произошло уничтожение Активностей В, С и D приложения АР0004.

И теперь задача 92 содержит снова ТРИ Активности и стек имеет вид А-В-С. Все три Активности принадлежат приложению АР0003.

Нажмем Info чтобы убедиться

WTR0010

На этом с этим флагом все.

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

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