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

Закрытие приложения с несколькими Activity.

Добавлено: 05 апр 2012, 07:40
laandrew
Здравствуйте!

Как закрыть приложение, в котором несколько активностей? Если переходить с одной на другую и при этом делать finish(), то все понятно.
Допустим у нас три Activity. Мы последовательно попали на третью Activity. Как при нажатии в меню Выход на третьей Activity, полностью закрыть приложение?

Re: Закрытие приложения с несколькими Activity.

Добавлено: 05 апр 2012, 10:21
andev
это противоречит концепции архитектуры приложений на Androide
как-то можно, например руками "почистив" стек активностей. Я находил пример кода для такой задачи, но он у меня не сработал

Re: Закрытие приложения с несколькими Activity.

Добавлено: 05 апр 2012, 10:58
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();
Проверка, если пришла метка закрытия, то закрываемся

Re: Закрытие приложения с несколькими Activity.

Добавлено: 05 апр 2012, 11:03
andev
хм, это в три раза короче чем в том месте, где смотрел я
сейчас заюзаю :)

Re: Закрытие приложения с несколькими Activity.

Добавлено: 05 апр 2012, 11:19
laandrew
Получилось! Огромное спасибо!

Re: Закрытие приложения с несколькими Activity.

Добавлено: 02 июн 2013, 13:46
Stylish2011
Подскажите. вот у меня таким образом:

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

startActivity(new Intent(getActivity(), MainActivity.class));
getActivity().finish();
код переходит на MainActivity

а вот ка у вас здесь написано не переходит:

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

Intent intent = new Intent(getActivity(), MainActivity.class);
				intent.setFlags(Intent.FLAG_ACTIVITY_CLEAR_TOP);
				intent.putExtra("finish", true);
				startActivity(intent);
почему?