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

Activity Lifecycle, Saving Activity State, Managing Tasks, Intent, Intent Filter
Ответить
Аватара пользователя
damager82
Администратор
Сообщения: 1383
Зарегистрирован: 07 янв 2012, 11:32
Контактная информация:

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

Сообщение damager82 » 05 апр 2012, 11:15

На примере двух 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, то метод не работает. А если через ярлык, то все ок.
Добро пожаловать на форум сайта StartAndroid
ИзображениеИзображение

icamys
Сообщения: 22
Зарегистрирован: 07 май 2012, 00:32

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

Сообщение icamys » 16 май 2012, 20:24

Первый способ определенно лучше. Второй - просто устройство Голдберга =))

Ответить