Что такое таск в Android-е? Как задать поведение Activity?

Task — это стэк Activity-объектов, в котором пользователь выполняет задачу.
Он отображается как одно приложение в списке недавних (Overview / Recents).

Task = back stack

  • Первый Activity в таске — это root Activity
  • Пользователь нажимает «назад» → Activity удаляются из таска
  • Когда все Activity удалены → таск уничтожается

Как Activity попадает в таск?

Через комбинацию:

  • launchMode (standard, singleTop, singleTask, singleInstance)
  • intent flags (FLAG_ACTIVITY_NEW_TASK, CLEAR_TOP, и т.д.)
  • taskAffinity — контроль, к какому таску принадлежит Activity

launchMode это способы запуска Activity

Указывается в манифесте или через Intent-флаги.

launchModeПоведение
standardКаждое открытие → новая копия Activity (дефолт)
singleTopЕсли Activity уже на вершине стека → переиспользуется (onNewIntent)
singleTaskЕсли Activity есть в стеке таска → таск всплывает, onNewIntent()
singleInstanceКак singleTask, но Activity живёт в отдельном таске

taskAffinity это к какому таску принадлежит Activity

По умолчанию — все Activity одного приложения имеют одинаковый taskAffinity

<activity android:name=".LoginActivity"
    android:taskAffinity="com.example.login"
    android:launchMode="singleTask"
    android:exported="false" />

Теперь LoginActivity будет запускаться в своём отдельном таске.

Полезные intent-флаги

ФлагПоведение
FLAG_ACTIVITY_NEW_TASKЗапуск в новом таске (если taskAffinity отличается)
FLAG_ACTIVITY_CLEAR_TOPУдаляет все Activity выше заданной
FLAG_ACTIVITY_SINGLE_TOPКак launchMode="singleTop"
FLAG_ACTIVITY_NO_HISTORYActivity не сохраняется в back stack

Опубликовано

в

от

Метки: