Для старта стека из нескольких активити используется класс TaskStackBuilder.

После вызова метода startActivities() (см. картинку), стартует только activity3. Информация об activity1 и activity2 хранится в стеке. Когда пользователь нажимает «назад», или на activity3 вызывается метод finish(), создается и стартует activity2.

Этот механизм полезен для реализации роутинга при запуске приложения через deep link.