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

227
08 декабря 2017, 04:17

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

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

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

Answer 1

Вся проблема в том, что StartActivity остается в стеке активностей.

Решается все просто: когда из StartActivity вызываете MainActivity достаточно после startActivity() тупо вызвать finish() текущего StartActivity, тогда при нажатии кнопки вы не вернетесь назад.

Intent intent = new Intent(this, MainActivity.class);
this.startActivity(intent);
this.finish();
Answer 2

Нужно очистить стэк, после авторизации:

      Intent intent = new Intent(StartActivity.this, MainActivity.class);
      intent.setFlags(Intent.FLAG_ACTIVITY_NEW_TASK | Intent.FLAG_ACTIVITY_CLEAR_TASK);
      startActivity(intent);
Answer 3

Не знаю, насколько это вам подходит, но вот еще один способ.

Можно использовать метод finishAffinity(), который будет закрывать текущий Activity и все родительские Activity. Тем самым, вы на StartActivity не попадете.

Работает только в Android 4.1 и выше.

READ ALSO
Перехват завершения процесса

Перехват завершения процесса

Добрый деньСуществует некая функция, структура которой:

221
Как сделать список постов с сайта (картинка и текст) в ListView(java)?

Как сделать список постов с сайта (картинка и текст) в ListView(java)?

Я хочу сделать клиент для сайтаНа сайте есть список постов, статей c картинкой и текстом

278
Запись в БД из Recyclerview

Запись в БД из Recyclerview

Имеется RecyclerView, в котором есть поляКак организовать считывание данных и запись в БД?

194
Кодировка UTF-8, UTF-16 в Java

Кодировка UTF-8, UTF-16 в Java

Хочу вывести греческую букву U (https://unicode-tablecom/en/01AF/) - получаю знаки вопроса

228