Завершить все предыдущие действия - PullRequest
337 голосов
/ 13 июня 2011

Мое приложение имеет следующие экраны потока:

Home->screen 1->screen 2->screen 3->screen 4->screen 5

Теперь у меня есть общая кнопка log out на каждом экране

(Home/ screen 1 / screen 2 /screen 3/ screen 4 / screen 5)

Я хочу, чтобы, когда пользователь нажимал кнопку выхода из системы (с любого экрана), все экраны заканчивались, и открывался новый экран Log in.

Я попробовал почти все FLAG_ACTIVITY, чтобы добиться этого. Я также прошёл несколько ответов в stackoverflow, но не смог решить проблему. Мое приложение на Android 1.6, поэтому я не могу использовать FLAG_ACTIVITY_CLEAR_TASK

Есть ли способ решить проблему?

Ответы [ 24 ]

2 голосов
/ 24 января 2012

Проще говоря, когда вы выходите из экрана входа в систему, а не после завершения экрана входа в систему.

И затем во всех форвардных действиях используйте это для выхода из системы:

final Intent intent = new Intent(getBaseContext(), LoginScreen.class);
intent.setFlags(Intent.FLAG_ACTIVITY_CLEAR_TOP);
context.startActivity(intent);

Отлично работает.

1 голос
/ 10 декабря 2016

Я нашел этот путь, он очистит всю историю и выйдет

Intent startMain = new Intent(Intent.ACTION_MAIN);
startMain.addCategory(Intent.CATEGORY_HOME);
startMain.setFlags(Intent.FLAG_ACTIVITY_NEW_TASK);
startActivity(startMain);
Intent intent = new Intent(getApplicationContext(), SplashScreen.class);
intent.addFlags(Intent.FLAG_ACTIVITY_CLEAR_TOP);
startActivity(intent);

finish();
System.exit(0);
1 голос
/ 13 июня 2011

Если вы вошли в систему под пользователем screen 1 и оттуда перешли на другие экраны, используйте

Intent intent = new Intent(this, Screen1.class);
intent.addFlags(FLAG_ACTIVITY_CLEAR_TOP);
startActivity(intent);
0 голосов
/ 05 июня 2016

Я нашел, что это решение работает на всех устройствах, несмотря на уровень API (даже для <11) </p>

Intent intent = new Intent(getApplicationContext(), LoginActivity.class);
ComponentName cn = intent.getComponent();
Intent mainIntent = IntentCompat.makeRestartActivityTask(cn);
startActivity(mainIntent);
...