В чем разница между singleTop и singleTask

«В чем разница между singleTop и singleTask» — вопрос из категории Android компоненты, который задают на 23% собеседований Android Разработчик. Ниже — развёрнутый ответ с разбором ключевых моментов.

Ответ

singleTop и singleTask — это флаги launchMode в Android, определяющие поведение активити при запуске.

singleTop:
Если активити уже находится на вершине стека, новый инстанс не создается, а вызывается onNewIntent() для существующего. Если активити не на вершине, создается новый инстанс.
Пример:

<activity android:name=".MyActivity" android:launchMode="singleTop" />

singleTask:
Создается только один инстанс активити в отдельном таске (стеке). Если активити уже существует, система вызывает onNewIntent() и очищает все активити над ним.
Пример:

<activity android:name=".MainActivity" android:launchMode="singleTask" />

Разница:

  • singleTop проверяет только вершину стека, singleTask — весь стек.
  • singleTask может очистить активити над собой, singleTop — нет.
  • singleTask обычно используется для главного экрана, singleTop — для уведомлений или повторяющихся действий.