Android Intent's Stack - экран входа в систему и главное меню - PullRequest
2 голосов
/ 01 декабря 2011

Когда у меня есть два действия

Activity A, B;
// A stands for Login Screen
// B stands for Main Application Screen

Приложение запускается с A, тогда пользователь выполняет вход в систему, и он будет указывать на B

Когда я запускаю B Iдобавьте этот флаг в Intent Intent.FLAG_ACTIVITY_CLEAR_TOP, но когда я завершу B, я ожидаю, что это будет последнее действие и выход из приложения.

Вместо того, что я ожидал, A выводится на передний план,и пользователь снова остается на экране входа в систему.

Должен ли я начинать A с B как startActivityForResult и использовать B в качестве основной активности всего приложения?

Или флагне работает как должно быть?

Ответы [ 2 ]

7 голосов
/ 01 декабря 2011

Не беспокойтесь о намеренных флагах.Когда действие A начинает действие B после успешного входа в систему, просто вызовите A finish().

Альтернативный, несколько более сложный подход - сделать B основным занятием, а в методе B onCreate - запустить действие.А для результата, который должен быть каким-то флагом пройти / потерпеть неудачу.Когда действие A завершается (при успешном входе в систему, сбое или при выходе пользователя из системы), действие B в onActivityResult определяет, продолжить или завершить, на основе возвращенного значения.Это работает, потому что, согласно документам :

Как особый случай, если вы вызываете startActivityForResult () с requestCode> = 0 во время начального onCreate (BundlevedInstanceState) /onResume () вашей активности, тогда ваше окно не будет отображаться, пока результат не будет возвращен из запущенной активности.Это позволяет избежать видимого мерцания при перенаправлении на другое действие.

3 голосов
/ 01 декабря 2011

Использовать метод отделки:

Intent lIntent = new Intent();
lIntent.setClass(this, MainActivity.class);
startActivity(lIntent);
finish();
...