Как очистить задний стек при намеренной загрузке

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

любая помощь будет принята с благодарностью.

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();
Другие вопросы по тегам