Подтвердить что ты не робот

О проекте android launchmode "singleTask"

Я прочитал руководство разработчика Android и некоторые статьи в Интернете, я все еще запутался в singleTask launchmode. Возьмем пример:

Пользователь запускает App1, андроид запускает новую задачу. Предположим, что App1 создает действия в следующем порядке:

ActivityA -> ActivityB -> ActivityC

Как выглядит задача 1.

Затем пользователь нажимает на домашнюю консоль и выбирает запуск App2, поэтому task1 переходит в фоновый режим и андроид запускает новую задачу: task2, пользователь делает что-то:

ActivityD -> ActivityE

теперь скажем ActivityE попробуйте запустить ActivityB, а ActivityB имеет стартовый образ singleTask.

То, что я понимаю, это то, что task1 снова возвращается к интерфейсу, а task2 переходит в фоновый режим. Теперь задача 1 выглядит следующим образом:

ActivityA -> ActivityB

Это означает:

  • ActivityC будет удален из задачи1, а ActivityB станет в верхней части Activity.

  • Если пользователь сейчас нажмет кнопку "Назад", он перейдет к ActivityA задачи1 вместо возврата в ActivityE задачи2

Я прав?

Спасибо

4b9b3361

Ответ 1

ActivityC будет удален из задачи1, а ActivityB станет в верхней части Activity.

Да, вы правы...

ActivityC будет удалена, то есть будет вызван метод onDestroy ActivityC. Следовательно, когда пользователь снова запускает задачу 1, отображается ActivityB, а не ActivityC.

Создали 2 Задачи (Проекты) и загрузили те же @SendSpace. Попробуйте...

Если вы посмотрите на андроид , то он говорит

"Активность" singleTask "позволяет другим действиям быть частью его задачи. Она всегда лежит в основе ее задачи, но в эту задачу могут быть включены другие действия (обязательно" стандартные "и" одиночные ").

Это означает, что при нажатии кнопки "домой" все действия над одной задачей (которые в вашем случае являются ActivityB) удаляются из стека.

В примере приложения, которое я дал вам ранее, если вы просто запустили проект "AndroidTest" и нажмите кнопку "домой" в журналах, вы увидите, что 2-я операция включена в "Пауза", и когда вы снова запускаете ее из "Недавнее приложение" список 2-й активности уничтожается.

В senario, в котором активность над активными агентами Single Activity (ActivityB) не удаляется из Back Stack, а другой запрос приложения этого Activity (ActivityB) может не отображаться, и намерение может быть удалено. Но у этого есть все меньше шансов на то, что пользователь должен будет нажать кнопку "Домой", но текущая Task\App в BackStack, прежде чем он сможет перейти к другой Task\App.

Следовательно, предупреждение

Другие режимы - singleTask и singleInstance - не подходят для большинства приложений, поскольку они приводят к модели взаимодействия, которая, вероятно, не знакома пользователям и сильно отличается от большинства других приложений.

Надеюсь, это решает ваши сомнения.