Опишите singleTask и singleInstance launch modes – Android Interview Review
jLove – conference for Java developers

Опишите singleTask и singleInstance launch modes

Посмотреть в Telegram: @AndroidSobes/226
В режиме singleTask создается единственный инстанс активити. Если активити не содержится в бэкстеке, то она создается, как при режиме standard. Если же активити была создана ранее, то на ней вызывается метод onNewIntent(). При этом уничтожаются все активити, которые находятся выше в бэкстеке.

Пример 1. Допустим, есть бэкстек A -> B -> C. Активити D запускается в режиме singleTask. Бэкстек переходит в состояние A -> B -> C -> D.

Пример 2. Бэкстек имеет вид A -> B -> C -> D. Активити B запускается в режиме singleTask. Бэкстек переходит в состояние A -> B. На активити B вызывается onNewIntent(), а на активити C и D – onDestroy().

Режим singleInstance позволяет запустить активити в новой задаче. Бэкстек этой задачи будет содержать только созданную активити.

Пример. Пусть бэкстек состоит из активити A -> B -> C. Активити D стартует в режиме singleInstance. В системе создается отдельная задача и бэкстеки выглядят так:
Task 1: A -> B -> C
Task 2: D

Если после этого стартовать активити E в режиме standard и снова запустить D, то бэкстеки будут иметь вид:
Task 1: A -> B -> C -> E
Task 2: D

Если активити уже запущена в режиме singleInstance, то при повторном старте будет вызван метод onNewIntent().