Очищаем Activity стек в Android
Обычно, когда мы запускаем новую Activity, все предыдущие Activity будут храниться в стеке. Так что, если вы хотите убить все предыдущие Activity, просто выполните следующий метод.
В API уровня 11 или выше, используйте в Intent флаги FLAG_ACTIVITY_CLEAR_TASK
и FLAG_ACTIVITY_NEW_TASK
, чтобы очистить весь стек:
Intent intent = new Intent(OldActivity.this, NewActivity.class);
// установка флагов
intent.setFlags(Intent.FLAG_ACTIVITY_NEW_TASK | Intent.FLAG_ACTIVITY_CLEAR_TASK)
startActivity(intent);
Подробнее о флагах:
FLAG_ACTIVITY_NEW_TASK
— запускает Activity в новом таске. Если уже существует таск с экземпляром данной Activity, то этот таск становится активным, и срабатываем методonNewIntent()
.FLAG_ACTIVITY_CLEAR_TOP
— если экземпляр данной Activity уже существует в стеке данного таска, то все Activity, находящиеся поверх нее разрушаются и этот экземпляр становится вершиной стека. Также вызоветсяonNewIntent()
Остальную, более детальную информацию можно найти в офф. документации: Tasks and Back Stack