Как я могу программно закрыть приложение? - PullRequest
4 голосов
/ 04 ноября 2010

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

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

Ответы [ 5 ]

7 голосов
/ 04 ноября 2010

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

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

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

4 голосов
/ 28 декабря 2012

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

    this.finish();
    Intent intent = new Intent(Intent.ACTION_MAIN);
    intent.addCategory(Intent.CATEGORY_HOME);
    intent.setFlags(Intent.FLAG_ACTIVITY_NEW_TASK);
    startActivity(intent);
4 голосов
/ 04 ноября 2010

Может быть, эта ссылка поможет страница разработчика

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

Отключение компонентов

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

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

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

Службу можно остановить, вызвав ее метод stopSelf () или вызвав Context.stopService ().

Компоненты также могут отключаться системой, когда они больше не используются или когда Android должен освободить память для более активных компонентов.В следующем разделе, «Жизненные циклы компонентов», более подробно обсуждается эта возможность и ее последствия.

1 голос
/ 04 ноября 2010

Android не любит, когда вы закрываете свои приложения. Вот обсуждение этого: Не одобряется ли выход из приложения?

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

0 голосов
/ 04 ноября 2010

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

finish();

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

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

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...