Страницы

Поиск по вопросам

вторник, 28 января 2020 г.

Удаление Activity из бэкстека

#java #android #activity


Есть приложения в котором есть StartActivity в котором загружается данные с сервера.
После данные передаются в  MainActivity где данные обрабатываются и выводится на экран. 

Нужно, чтобы после запроса StartActivity был уничтожен. Но при щелчке назад в MainActivity
приложения возвращается назад где просто выводится лейаут StartActivity. 

Нужно сделать так, чтобы после передачи данных StartActivity был уничтожен. Как можно
реализовать или есть альтернативы?
    


Ответы

Ответ 1



Вся проблема в том, что StartActivity остается в стеке активностей. Решается все просто: когда из StartActivity вызываете MainActivity достаточно после startActivity() тупо вызвать finish() текущего StartActivity, тогда при нажатии кнопки вы не вернетесь назад. Intent intent = new Intent(this, MainActivity.class); this.startActivity(intent); this.finish();

Ответ 2



Нужно очистить стэк, после авторизации: Intent intent = new Intent(StartActivity.this, MainActivity.class); intent.setFlags(Intent.FLAG_ACTIVITY_NEW_TASK | Intent.FLAG_ACTIVITY_CLEAR_TASK); startActivity(intent);

Ответ 3



Не знаю, насколько это вам подходит, но вот еще один способ. Можно использовать метод finishAffinity(), который будет закрывать текущий Activity и все родительские Activity. Тем самым, вы на StartActivity не попадете. Работает только в Android 4.1 и выше.

Комментариев нет:

Отправить комментарий