Как очистить задний стек при намеренной загрузке
У меня есть система входа в мое приложение, и я хотел бы сделать так, чтобы после того, как пользователь войдет в свою учетную запись, обратный стек будет очищен, поэтому он не сможет увидеть активность входа в систему, если он не нажмет кнопку выхода из системы в основная деятельность. Как бы я это сделал?
любая помощь будет принята с благодарностью.
2 ответа
Использование finish()
способ уничтожить вашу активность входа после намерения. Он также будет удален из стека.
Intent i = new Intent(this, YourAccountActivity.class);
startActivity(i);
// destroying your current activity
finish();
Если вы не хотите помещать это действие в стек, вы также можете использовать
android:noHistory="true"
в AndroidManifest.xml
Когда вы меняете действие, это действие не будет в стеке.
Значение "истина" означает, что действие не оставит исторического следа. Он не останется в стеке действий для задачи, поэтому пользователь не сможет вернуться к нему.
Другой вариант - использовать IntentFlags.
Intent i = new Intent(this, YourAccountActivity.class);
i.addFlags(Intent.FLAG_ACTIVITY_CLEAR_TOP);
i.addFlags(Intent.FLAG_ACTIVITY_NEW_TASK);
startActivity(i);
Если вы хотите вручную завершить два действия одновременно, вы можете использовать класс ApplicationContext и в этом определении.
MyApplicationClass.java
public Activity homeActivity = null;
public Activity otherActivity = null;
и когда вы запускаете Homeactivity, вы можете сделать это в методе onCreate():
HomeActivity.java
private MyApplicationClass myApplication = null;
myApplication = (MyApplicationClass )getApplicationContext();
myApplication.homeActivity = HomeActivity.this;
То же самое в методе onCreate() другого взаимодействия:
otheractivity.java
private MyApplicationClass myApplication = null;
myApplication = (MyApplicationClass )getApplicationContext();
myApplication.otherActivity = otheractivity.this;
И когда вы хотите закончить "Домашнюю деятельность" и "Действие" одновременно, тогда Вы можете закончить так же…
myApplication.homeActivity.finish();
myApplication.otherActivity.finish();