2010-11-04 2 views
4

Я ищу код для кнопки, которая полностью закрывает мое приложение.Как я могу программно закрыть приложение?

Я попробовал кое-что из Google, но мое приложение все еще работает в фоновом режиме. Мне нужно закрыть его полностью. Есть ли код, который делает это?

+1

иногда исключения - это путь. :) Они обязательно ** убьют ** ваше приложение. –

ответ

6

Зачем вам действительно закрывать приложение? Предполагая, что это просто обычное приложение, а не запуск каких-либо фоновых сервисов или проведение wakelock (вы бы знали, если бы вы делали эти вещи), система очень хорошо справляется с управлением задачами и закончит ваше приложение, если оно задумано и ему нужно ОЗУ без ручного вмешательства. Обычно, если вы только finish() ваша база Activity это произойдет само по себе, но почти никогда не было причин для этого.

(Единственное исключение из этого, если ваш Application каким-то образом держит ссылки на уже завершенные действия, которые могут вызвать уродливые утечки памяти и поддерживать закрытие вашего приложения нормально, но вы также, вероятно, знаете, делая что-то подозрительное с переопределенным подклассом Application.)

То есть: в 99% случаев, если вы хотите принудительно закрыть приложение, вам нужно либо исправить любую ошибку в коде, чтобы вы считали, что система не может справиться с ней самостоятельно, либо вам нужно перечитайте documentation on the Android application lifecycle еще раз (потому что вы должны были уже прочитать это 3 раза, прежде чем начать писать приложение для Android :)).

4

Может быть, эта ссылка поможет developer page

Я процитировал часть ниже, что я думаю, может помочь вам.

выключая компоненты

Поставщик содержимого только активен, пока он в ответ на просьбу от ContentResolver. А приемник вещания активен только , пока он отвечает на широковещание . Поэтому нет необходимости в явно отключить эти компоненты.

Деятельность, с другой стороны, обеспечивает пользовательский интерфейс . Они находятся в долгой беседе с пользователем и могут оставаться активными, даже если бездействует, пока разговор продолжается. Аналогичным образом, службы могут также работать в течение длительного времени. Так Android имеет методы, чтобы закрыть деятельность и услуги в упорядоченном образом:

Деятельность может быть закрыта путем вызова метода отделки(). Одна активность может закрыть другую деятельность (сначала она начиналась с startActivityForResult()), вызывая finishActivity().

Сервис можно остановить, вызвав его метод stopSelf(), или на , вызывающий Context.stopService().

компоненты не могут быть также закрыты системы, когда они больше не используются или когда Android должны вернуть память для более активных компонентов. Более поздняя часть, Компонент Lifecycles, более подробно обсуждает эту возможность и ее разветвления.

0

иметь в виду, что:

finish(); 

метод закрывает текущую активность только. Если у вас открыто несколько активных действий, вы должны вызвать финиш() для каждой операции.

Примечание: Закрытие службы отличается.

1

Android не нравится, когда вы закрываете свои приложения. Вот обсуждение на том, что: Is quitting an application frowned upon?

Если вы действительно хотите сделать это, по какой-либо причине, вам нужно закрыть все свои действия. Вот обсуждение того, как вы могли бы сделать это: Closing several android activities simultaneously

4

Вы можете закрыть все действия от фона и при повторном открытии приложения Он начинается с первого действия

this.finish(); 
Intent intent = new Intent(getApplicationContext(), CloseApp.class); 
intent.addFlags(Intent.FLAG_ACTIVITY_CLEAR_TOP); 
startActivity(intent); 

Вы можете закрыть все действия от фона и при повторном открытии приложения. Он начинается с приостановленной деятельности [где вы закрыли] деятельность

this.finish(); 
    Intent intent = new Intent(Intent.ACTION_MAIN); 
    intent.addCategory(Intent.CATEGORY_HOME); 
    intent.setFlags(Intent.FLAG_ACTIVITY_NEW_TASK); 
    startActivity(intent); 
Смежные вопросы