У меня есть список действий A-B -C -D-E и более, например, конечная активность – K. Я хочу очистить все эти действия в стеке, когда нажимаю кнопку BACK. Как я могу сделать ? На самом деле, я езжу
onBackPress(){ moveTaskToBack(true); finish(); }
Но удаляется только текущая активность и выход приложения. Затем я возвращаюсь к приложению, он возобновляет работу до K. Я хочу, чтобы это начиналось с начала, когда я снова открывал приложение. Я думаю, причина здесь в том, что список действий в стеке все еще сохраняется, поэтому я хочу очистить весь стек, нажав кнопку BACK. Какие-либо предложения ? Большое спасибо !
Вы должны вызвать свою активность с FLAG_ACTIVITY_CLEAR_TOP
внутри вашего onBackPressed
@Override public void onBackPressed() { Intent it = new Intent(YouCurrentActivity.this, YourFinalActivity.class); it.addFlags(Intent.FLAG_ACTIVITY_CLEAR_TOP); startActivity(it); finish(); }
Надеюсь, поможет!
Существует метод под названием finishAffinity () для завершения всей активности.
public void onBackPressed(){ super.onBackPressed(); this.finishAffinity();}
Либо используйте флаг noHistory
в манифесте, либо noHistory
каждое действие самостоятельно, когда пользователь перемещается.
startActivity(myIntent); finish();
Другое решение, может быть, самое лучшее, если у вас так много наложений: используйте только одно действие и обрабатывайте контент во Fragments
. Таким образом, вы контролируете, что именно вы хотите показать, когда пользователь нажимает кнопку «Назад».
В уровне API 11 или выше используйте FLAG_ACTIVITY_CLEAR_TASK
и FLAG_ACTIVITY_NEW_TASK
в Intent для очистки всего стека действий. Добавьте этот код в свой onBackPressed()
> This launch mode can also be used to
Хороший эффект в сочетании с FLAG_ACTIVITY_NEW_TASK: если он используется для запуска корневой активности задачи, он выведет на текущий момент весь исполняемый экземпляр этой задачи на передний план, а затем очистит его до корневого состояния. Это особенно полезно, например, при запуске деятельности из диспетчера уведомлений.
Таким образом, ваш код для запуска B
будет:
Intent intent = new Intent(A.this, B.class); intent.addFlags(Intent.FLAG_ACTIVITY_CLEAR_TOP | Intent.FLAG_ACTIVITY_NEW_TASK); startActivity(intent); finish(); // call this to finish the current activity