Страница 1 из 1

Как "закрыть" приложение из любого Activity

Добавлено: 05 апр 2012, 11:15
damager82
На примере двух Activity: MainActivity и SecondActivity
Стартовое(корневое) - MainActivity. Из него вызывается SecondActivity.


Первый способ:
В SecondActivity есть некая кнопка "выход". На ее нажатие вешаем:

Код: Выделить всё

Intent intent = new Intent(this, MainActivity.class);
intent.setFlags(Intent.FLAG_ACTIVITY_CLEAR_TOP);
intent.putExtra("finish", true);
startActivity(intent);
Этот код вызывает MainActivity и чистит весь стек над ним. И посылаем свою метку закрытия


В MainActivity в onCreate сразу после конструктора суперкласса пишем

Код: Выделить всё

if (getIntent().getBooleanExtra("finish", false)) finish();
Проверка, если пришла метка закрытия, то закрываемся


Второй способ:
В манифесте для MainActivity прописываем свойство:

Код: Выделить всё

android:clearTaskOnLaunch="true"
Это означает, что если свернуть приложение, а потом снова запустить, то весь стек выше MainActivity очистится и запустится MainActivity.

В SecondActivity есть некая кнопка "выход". На ее нажатие вешаем:

Код: Выделить всё

moveTaskToBack(true);
Код просто убирает приложение в фон. Аналогично нажатию кнопки Home.

У второго способа есть недостаток: если приложение запускать через удержание кнопки Home, то метод не работает. А если через ярлык, то все ок.

Re: Как "закрыть" приложение из любого Activity

Добавлено: 16 май 2012, 20:24
icamys
Первый способ определенно лучше. Второй - просто устройство Голдберга =))