Форум программистов, компьютерный форум, киберфорум
Наши страницы
Программирование Android
Войти
Регистрация
Восстановить пароль
 
Рейтинг 4.68/79: Рейтинг темы: голосов - 79, средняя оценка - 4.68
JIyrApy
34 / 34 / 2
Регистрация: 22.08.2010
Сообщений: 260
#1

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

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

Здравствуйте.
Как программно завершить приложение? То есть не завершить активность через finish(), а именно выйти из приложения вообще.
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
29.03.2013, 12:38
Ответы с готовыми решениями:

Завершение работы приложения
у меня есть менюшка. там есть кнопочка quit, мне нужна чтоб она полностью...

Программное удаление приложения
Реально ли из android-приложения деинсталлировать другое android-приложение?

Полное завершение работы приложения при нажатии навигационной кнопки "Назад"
Здравствуйте. Имеется приложение. При нажатии кнопки "Домой" приложение выходит...

Завершение потока
Необходимо корректно завершить поток. Сейчас код такой class MyThread...

Завершение сервиса
вот метод завершающий сервис в основной активности: public void...

13
dr_yand
156 / 138 / 14
Регистрация: 13.03.2013
Сообщений: 321
Записей в блоге: 3
29.03.2013, 12:42 #2
System.exit()
0
JIyrApy
34 / 34 / 2
Регистрация: 22.08.2010
Сообщений: 260
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);
    }
Что не так?
0
c4sp3r
0x5B4C322291BD52AE
93 / 93 / 0
Регистрация: 04.03.2013
Сообщений: 295
29.03.2013, 13:53 #4
JIyrApy, System.exit срабатывает но Android восстанавливает приложение скорее всего так как это нарушает Activity Lifecycle. Кстати гугл не рекомендует помещать в программы возможность выхода из приложения посредством всяких кнопочек подробнее тут
0
JIyrApy
34 / 34 / 2
Регистрация: 22.08.2010
Сообщений: 260
29.03.2013, 14:18  [ТС] #5
А как то можно очистить список активностей, чтобы при нажатии на кнопку "Назад" приложение считало, что это единственная запущенная его активность? Ну или как то финишировать все предыдущие активности приложения из одной, центральной активности?
0
c4sp3r
0x5B4C322291BD52AE
93 / 93 / 0
Регистрация: 04.03.2013
Сообщений: 295
29.03.2013, 15:59 #6
JIyrApy, зачем при нажатии Back срабатывает событие onBackPressed которое по умолчанию завершает активность вызывая finish().
0
V0v1k
1160 / 984 / 1
Регистрация: 28.06.2012
Сообщений: 3,462
29.03.2013, 16:00 #7
а почему бы не завершать текущую активити при переходе но новую? тогда не останутся висеть предыдущие активити.
1
JIyrApy
34 / 34 / 2
Регистрация: 22.08.2010
Сообщений: 260
29.03.2013, 16:13  [ТС] #8
Да такой вариант с закрытием текущей активности конечно хорош, но тут есть загвоздка. Вот на примере:

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

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

Ну а если не завершать, то получается следующее. зашел я в какую-нить глубокую активность и вернулся из нее в главную активность. И теперь, если нажать в главной активности "Назад" - то ясен пень она вернется в ту самую глубокую активность, а не завершит приложение. Вот я и хочу найти способ, чтобы при нажатии на кнопку "Назад" в главной активности в любом случае приложение закрывалось
0
c4sp3r
0x5B4C322291BD52AE
93 / 93 / 0
Регистрация: 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
1
JIyrApy
34 / 34 / 2
Регистрация: 22.08.2010
Сообщений: 260
29.03.2013, 17:16  [ТС] #10
Ха. Ну в принципе пойдет, приложение пропадает) Правда, если восстановить из списка скрытых активностей, всерн появляется не главная активность, а предыдущая дочерняя, но ниче, это уже издержки. Спасибо большое за вариант решения
0
V0v1k
1160 / 984 / 1
Регистрация: 28.06.2012
Сообщений: 3,462
29.03.2013, 21:11 #11
так и не понял что мешает закрывать каждую активити при переходе и написать логику переходу к радительской активити.

а чтобы попасть на главную закрыв все дочерные можно воспользоваться флагом FLAG_ACTIVITY_CLEAR_TOP
2
JIyrApy
34 / 34 / 2
Регистрация: 22.08.2010
Сообщений: 260
30.03.2013, 11:09  [ТС] #12
Шикааарно! FLAG_ACTIVITY_CLEAR_TOP - то что нужно. В довесок допилил переходы назад - теперь вообще все как надо. Спасибо всем откликнувшимся!
0
lifestyle
Mobile Developer
234 / 230 / 18
Регистрация: 10.05.2009
Сообщений: 917
01.04.2013, 21:22 #13
Ни в коем случае не пользуйтесь System.exit(0);
1) Потом не расхлебать последствий при поддержке приложения
2) Противоречие философии Андроида
3) Есть набор флагов позволяющий сделать все необходимое, не возвращаться к предыдущим Активити при нажатии кнопки Back - SingleTop or singleInstance , изьятие приложения из истории (recents app) и т.п.
читайте документацию
0
+1
313 / 146 / 50
Регистрация: 24.08.2010
Сообщений: 995
03.02.2018, 12:48 #14
Цитата Сообщение от lifestyle Посмотреть сообщение
Ни в коем случае не пользуйтесь System.exit(0);
Как тогда сервис убить?
Запускаю так
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
        Intent iN = new Intent(getApplicationContext(), General.class);
        intent.setFlags(Intent.FLAG_ACTIVITY_CLEAR_TOP | Intent.FLAG_ACTIVITY_SINGLE_TOP | Intent.FLAG_ACTIVITY_CLEAR_TASK);
        pI = PendingIntent.getActivity(getApplicationContext(),
                0, iN, PendingIntent.FLAG_CANCEL_CURRENT);
 
        NotificationCompat.Builder builder = new NotificationCompat.Builder(this);
        builder.setContentIntent(pI)
                        .setSmallIcon(R.drawable.icon)
                        .setShowWhen(false);
 
        Notification notification = builder.build();
 
        notification.defaults = Notification.DEFAULT_SOUND |
                Notification.DEFAULT_VIBRATE;
 
        NotificationManager notificationManager =
                (NotificationManager) getSystemService(NOTIFICATION_SERVICE);
        notificationManager.notify(101, notification);
 
        startForeground(101, notification);
При закрытии
C++
1
stopService(new Intent(TabActivity.this, VisService.class));
Если не делаю System.exit(0); то он закрывается и снова потом оживает.
0
03.02.2018, 12:48
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
03.02.2018, 12:48

Завершение потока AsyncTask
Доброго времени суток. Возникла проблема с закрытием потока. Первый раз код...

Коректное завершение программы
Есть главное activity, которое запускает сервис. Сервис выполняет длительную...

Принудительное завершение звонка
Здравствуйте. Подскажите пожалуйста как завершить звонок не дожидаясь, когда...


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

Или воспользуйтесь поиском по форуму:
14
Ответ Создать тему
Опции темы

КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2018, vBulletin Solutions, Inc.
Рейтинг@Mail.ru