Удалить конкретную активность стека
В моем приложении у меня есть последовательность из 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.