Форум программистов, компьютерный форум CyberForum.ru

Программирование Android

Войти
Регистрация
Восстановить пароль
 
Рейтинг: Рейтинг темы: голосов - 88, средняя оценка - 4.88
JIyrApy
31 / 31 / 1
Регистрация: 22.08.2010
Сообщений: 243
#1

Программное завершение приложения - Android

29.03.2013, 12:38. Просмотров 11356. Ответов 12
Метки нет (Все метки)

Здравствуйте.
Как программно завершить приложение? То есть не завершить активность через finish(), а именно выйти из приложения вообще.
После регистрации реклама в сообщениях будет скрыта и будут доступны все возможности форума.
dr_yand
 Аватар для dr_yand
156 / 138 / 6
Регистрация: 13.03.2013
Сообщений: 321
Записей в блоге: 3
29.03.2013, 12:42     Программное завершение приложения #2
System.exit()
JIyrApy
31 / 31 / 1
Регистрация: 22.08.2010
Сообщений: 243
29.03.2013, 12:54  [ТС]     Программное завершение приложения #3
Вот такой вариант почему то всерн не выходит а перескакивает на предыдущую активность
Java
1
2
3
4
5
6
7
8
@Override
    public boolean onKeyDown(int keyCode, KeyEvent event) {
        // TODO Auto-generated method stub
        if(keyCode==KeyEvent.KEYCODE_BACK){
            System.exit(0);
        }
        return super.onKeyDown(keyCode, event);
    }
Что не так?
c4sp3r
0x5B4C322291BD52AE
 Аватар для c4sp3r
92 / 92 / 5
Регистрация: 04.03.2013
Сообщений: 295
29.03.2013, 13:53     Программное завершение приложения #4
JIyrApy, System.exit срабатывает но Android восстанавливает приложение скорее всего так как это нарушает Activity Lifecycle. Кстати гугл не рекомендует помещать в программы возможность выхода из приложения посредством всяких кнопочек подробнее тут http://*******/g2Crc
JIyrApy
31 / 31 / 1
Регистрация: 22.08.2010
Сообщений: 243
29.03.2013, 14:18  [ТС]     Программное завершение приложения #5
А как то можно очистить список активностей, чтобы при нажатии на кнопку "Назад" приложение считало, что это единственная запущенная его активность? Ну или как то финишировать все предыдущие активности приложения из одной, центральной активности?
c4sp3r
0x5B4C322291BD52AE
 Аватар для c4sp3r
92 / 92 / 5
Регистрация: 04.03.2013
Сообщений: 295
29.03.2013, 15:59     Программное завершение приложения #6
JIyrApy, зачем при нажатии Back срабатывает событие onBackPressed которое по умолчанию завершает активность вызывая finish().
V0v1k
1157 / 981 / 1
Регистрация: 28.06.2012
Сообщений: 3,462
29.03.2013, 16:00     Программное завершение приложения #7
а почему бы не завершать текущую активити при переходе но новую? тогда не останутся висеть предыдущие активити.
JIyrApy
31 / 31 / 1
Регистрация: 22.08.2010
Сообщений: 243
29.03.2013, 16:13  [ТС]     Программное завершение приложения #8
Да такой вариант с закрытием текущей активности конечно хорош, но тут есть загвоздка. Вот на примере:

главная активность -> дочерняя активность -> дочерняя активность -> дочерняя активность -> и тд. То есть из дочерней активности вызывается ее дочерняя активность и тд. И предусмотрено из любой дочерней активности сделать возврат сразу на главную активность (минуя все обратные переходы, вызовом намерения главной активности). Вместе с тем можно из дочерней активности вернуться на предыдущую родительскую активность (грубо говоря, back).

Проблема в том, что если завершать родительские активности, переходя на дочерние - то теряется возможность возврата в родителя (back) - а это нужно.

Ну а если не завершать, то получается следующее. зашел я в какую-нить глубокую активность и вернулся из нее в главную активность. И теперь, если нажать в главной активности "Назад" - то ясен пень она вернется в ту самую глубокую активность, а не завершит приложение. Вот я и хочу найти способ, чтобы при нажатии на кнопку "Назад" в главной активности в любом случае приложение закрывалось
c4sp3r
0x5B4C322291BD52AE
 Аватар для c4sp3r
92 / 92 / 5
Регистрация: 04.03.2013
Сообщений: 295
29.03.2013, 16:37     Программное завершение приложения #9
JIyrApy, а если так

Java
1
2
moveTaskToBack(true);
super.onBackPressed();
http://stackoverflow.com/questions/2...een-on-android
JIyrApy
31 / 31 / 1
Регистрация: 22.08.2010
Сообщений: 243
29.03.2013, 17:16  [ТС]     Программное завершение приложения #10
Ха. Ну в принципе пойдет, приложение пропадает) Правда, если восстановить из списка скрытых активностей, всерн появляется не главная активность, а предыдущая дочерняя, но ниче, это уже издержки. Спасибо большое за вариант решения
V0v1k
1157 / 981 / 1
Регистрация: 28.06.2012
Сообщений: 3,462
29.03.2013, 21:11     Программное завершение приложения #11
так и не понял что мешает закрывать каждую активити при переходе и написать логику переходу к радительской активити.

а чтобы попасть на главную закрыв все дочерные можно воспользоваться флагом FLAG_ACTIVITY_CLEAR_TOP
JIyrApy
31 / 31 / 1
Регистрация: 22.08.2010
Сообщений: 243
30.03.2013, 11:09  [ТС]     Программное завершение приложения #12
Шикааарно! FLAG_ACTIVITY_CLEAR_TOP - то что нужно. В довесок допилил переходы назад - теперь вообще все как надо. Спасибо всем откликнувшимся!
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
01.04.2013, 21:22     Программное завершение приложения
Еще ссылки по теме:

Коректное завершение программы Android
Android Программное масштабирование
Android Полное завершение работы приложения при нажатии навигационной кнопки "Назад"
Android Из приложения А проверить наличие установленного на устройстве приложения В
Поиск и завершение всех Service программы Android

Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
lifestyle
Mobile Developer
 Аватар для lifestyle
231 / 227 / 4
Регистрация: 10.05.2009
Сообщений: 917
01.04.2013, 21:22     Программное завершение приложения #13
Ни в коем случае не пользуйтесь System.exit(0);
1) Потом не расхлебать последствий при поддержке приложения
2) Противоречие философии Андроида
3) Есть набор флагов позволяющий сделать все необходимое, не возвращаться к предыдущим Активити при нажатии кнопки Back - SingleTop or singleInstance , изьятие приложения из истории (recents app) и т.п.
читайте документацию
Yandex
Объявления
01.04.2013, 21:22     Программное завершение приложения
Ответ Создать тему
Опции темы

Текущее время: 06:01. Часовой пояс GMT +3.
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2017, vBulletin Solutions, Inc.
Рейтинг@Mail.ru