Страница 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);
почему?