2015-10-07 2 views
0

У меня есть два вида действий - один для кода доступа, а другой - за действие кода доступа. Поток, как правило, при запуске приложения, сначала отображается экран/активность кода доступа, и основное действие показано ниже. Но, когда приложение относится к основному виду деятельности (а не к действию кода доступа), а приложение минимизируется, основное действие помещается в стек. На этом этапе, если запущен «последний список», отображается основное действие, а не действие кода доступа. Можно ли это решить? Или, как ведет себя Android?Активность за кодом доступа отображается в стеке действий

Может кто-нибудь, пожалуйста, помогите мне с этим?

Заранее спасибо.

+0

Если вы обнаружили, что любой из приведенных ниже ответов поможет вам, пожалуйста, нажмите галочку, чтобы принять ее как ответ. Это поможет людям, которые имеют один и тот же вопрос, найти правильный ответ. –

ответ

1

Да, это поведение Android, но может быть решение.

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

Для этого одним из способов было бы использовать один Activity с двумя Fragments. При повторном запуске Activity загрузите код доступа Fragment. Когда введен правильный пароль, переключитесь на главный Fragment.

+0

Спасибо, Энди. Ваше понимание верное. Сейчас у меня два разных вида деятельности. Я хочу, чтобы основная активность загружалась только после ввода пароля, даже если она помещается в стек активности, и нажата кнопка recents. Вызывается onPause(), когда вы нажимаете recents? Если да, может ли этот обратный вызов использовать что-то? – user4122421

+0

Если ваше приложение отображается на дисплее и вы нажимаете кнопки, верхняя часть 'Активность' будет приостановлена ​​и остановлена. Если вы находитесь в другом приложении и вы выбираете свое приложение из ретентатов, ваша верхняя «активность» начнется и возобновится. Если вы пойдете с описанным мной подходом, вам нужно будет поместить код, который отображает код «Фрагмент» в 'onStart()'. –

0

Это должно сработать для вас. Вы можете использовать следующий код в основной деятельности

@Override 
public void onPause(){ 
    super.onPause(); 
    // put your code here... 
    this.finish(); 



} 

Это устранит основную деятельность FROMTHE стека каждый раз, когда приложение идет в фоновом режиме. Также убедитесь, что вы не закончили() действие с паролем, когда вы начинаете активную деятельность.

например: (в вашей деятельности) Секретный код

Intent i = new Intent(PasscodeActivity.this, MainActivity.class); 
    startActivity(i); 
+0

При таком подходе PasscodeActivity будет находиться в задней части экрана, когда MainActivity находится сверху, что означает, что нажатие кнопки «Назад» из MainActivity повторит действие PasscodeActivity, а не выход из приложения. –

+0

Ну, если вы не хотите, чтобы это произошло, просто переопределить метод OnBackPressed и вызовите finishAffinity() @Override общественного недействительными onBackPressed() { // TODO Auto-генерироваться метод заглушки это.finishAffinity(); } –

0

Хорошо, так что ... Как насчет запуска кода доступа активности? Затем оттуда вы сможете запустить основное действие и завершить работу с паролем. Таким образом, основное действие не запускается до тех пор, пока пароль не будет введен, и это поможет вам разделить обязанности. Похоже, это самое простое решение для меня.

+0

Это может сработать, хотя это создает круговую взаимосвязь между двумя действиями. При таком подходе вы хотите установить флаг в onStop() MainActivity, который означает «запустить PasscodeActivity и закончить меня в следующий раз, когда onStart() будет вызван». Или, полагаю, вы могли бы просто сделать это прямо в onStop. –

+0

@ AndyDennie Это так? Да, они оба называют друг друга, но так делают они в нынешнем подходе. Таким образом, вы можете просто установить флаг «isLoggedIn» и иметь проверку mainActivity для этого флага. Если его нет, он останавливается после запуска PasscodeActivity. С моей точки зрения, не намного больше округлости, чем в текущем подходе. –

+0

Как я понял исходный вопрос, PasscodeActivity запустила MainActivity, но не наоборот. Но, как я сказал, ваш подход работает. –

Смежные вопросы