Удалить конкретную активность стека

В моем приложении у меня есть последовательность из 5 действий, которая со второй, есть кнопка перезагрузки, это должно вернуться к первому, проблема в том, что стек все еще держит, что создает проблему, так как пользователь может нажать назад. Очистка всего стека не вариант, так как до этих 5 есть действие, и если я его очистлю, оно также будет стерто.

Использование фрагментов не вариант

1 ответ

Решение

Вам нужно использовать singleTask launchMode для действия, которое вы запускаете по нажатию перезапуска.

singleTask

Если в системе еще не было экземпляра SingleTask Activity, будет создан новый экземпляр, который будет просто помещен в стек той же задачи.

Но если существует, все виды деятельности, помещенные выше этого singleTask Деятельность будет автоматически и безжалостно уничтожена надлежащим образом (сработал жизненный цикл), чтобы действие, которое вы хотите отображать на вершине стека. В то же время, Intent будет отправлен в singleTask Activity через прекрасный onNewIntent() метод.


Таким образом, вам нужно написать запись активности в манифесте как

<activity
    android:name=".YouSecondActivity"
    android:label="singleTask launchMode"
    android:launchMode="singleTask">

Посмотри пожалуйста android:taskAffinity документация также. Хотя вам здесь не требуется, но вы должны знать об этом.

Ссылки: " Понимание запуска Android Mode": стандартный, singleTop, singleTask и singleInstance, а также " ActivityMode" Android Activity объяснил, который необходимо знать для разработки Android.

Другие вопросы по тегам