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

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

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

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

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

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

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

Программное завершение редактирование ячейки в DataGridView
Доброго времени суток, Господа. Подскажите пожалуйста, а как программно вызвать завершение...

Завершение приложения из VB
Как программно завершить запущенное приложение из VB?

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

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

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

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

а чтобы попасть на главную закрыв все дочерные можно воспользоваться флагом FLAG_ACTIVITY_CLEAR_TOP
2
JIyrApy
34 / 34 / 2
Регистрация: 22.08.2010
Сообщений: 271
30.03.2013, 11:09  [ТС] 12
Шикааарно! FLAG_ACTIVITY_CLEAR_TOP - то что нужно. В довесок допилил переходы назад - теперь вообще все как надо. Спасибо всем откликнувшимся!
0
lifestyle
Mobile Developer
236 / 232 / 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
328 / 161 / 53
Регистрация: 24.08.2010
Сообщений: 1,028
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
Answers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
03.02.2018, 12:48

Экстренное завершение приложения
Приветствую. Возник вопрос: каким образом сделать запись некоторых результатов работы программы...

Завершение работы приложения
Здраствуйте, у меня есть приложенько и оно использует selenium web driver,когда закрываешь форму...

Корректное завершение приложения
Хай! Подскажите, кто в курсе, как послать сигнал завершения приложения (не убивая процесс) из...


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

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

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