Как правильно закрывать приложения на Android?

Я новичок в платформе Android, и это, вероятно, глупый вопрос, но...

Как вы закрываете приложение?

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

Есть ли способ выйти из приложений? Или мне нужно использовать диспетчер задач каждый раз, когда я что-то выхожу?

Ответы (6)

Если вы выйдете из приложения с помощью BACKкнопки, оно вызовет onDestroy()текущую активность. Если вы нажмете HOMEее, только вызовы . onPause()
Не слишком беспокойтесь об этом, действия не разряжают батарею, они просто остаются в памяти, поэтому их можно открыть. быстрее в будущем.

Я бы не рекомендовал использовать одно из этих приложений-убийц задач. Android предназначен для хранения этих вещей в памяти по какой-то причине, использование программы-убийцы — это всего лишь еще одна дополнительная услуга, дергающая вашу батарею. На что вам нужно обратить внимание, это приложения, которые запускают службы в фоновом режиме, такие как Twitter или почтовые клиенты, загружающие свои серверы, любое хорошее приложение, имеющее такой сервис, будет иметь возможность отключить его.

Я заметил пару приложений, которые потребляют много энергии в этом приостановленном состоянии. А именно, последняя версия Google Maps и игра, которая у меня есть под названием GalaxIR. Так что следите за плохими преступниками и обязательно закрывайте их должным образом.
вы ошибаетесь, если поедание вашего теста является фоновой услугой.
Действительно, возможно иметь приложение, которое недостаточно хорошо разработано и не соответствует жизненному циклу приложения Android. Например, поток можно оставить активным в действии даже после того, как ОС приостановила его (нажав «Домой»), в этом случае приложение продолжит использовать батарею.
Я бы не стал держать ничего подобного на своем телефоне :-)
@schwiz Вы уверены, что кнопка «Назад» вызовет onDestroy ()? Я не заметил, чтобы это упоминалось в жизненном цикле активности . Насколько я знаю, кнопка «Назад» просто выталкивает представление «Активность» из стека. Можете ли вы показать нам ссылку, где это указано?
@Flow просто создайте простое действие, которое выводит на консоль при вызове onDestroy, и вы увидите, что кнопка «Назад» уничтожает действие.
@schwiz Вы правы, это задокументировано здесь . Может быть, вы хотите поместить это как ссылку в свой ответ.
Я обнаружил, что многие приложения не закрываются, когда я нажимаю кнопку «Назад». Например:Пандора, Г
(время моего редактирования истекло).... другие приложения, которые не закрываются при нажатии кнопки «Назад»: Pandora (которое продолжает играть даже после нажатия «Назад»), Google Play Store, FaceBook, Podkicker. Я тестирую, нажимая кнопку «Назад» до тех пор, пока приложение не исчезнет (обычно это возвращает меня на «Домой»), а затем запускаю Easy Task Killer.

Я почти уверен, что все, что я когда-либо читал, говорит о том, что Backкнопка — это правильный способ выхода из приложений.

Нажатие Homeоставляет их работать в фоновом режиме до тех пор, пока Android не решит, что они больше не нужны, что может быть удобно, если вам просто нужно переключаться между приложениями, чтобы что-то проверить (удержание Home в течение нескольких секунд дает вам список недавно запущенных приложений). вы можете переключиться обратно на большинстве телефонов), но выход с помощью кнопки «Назад» сообщает приложению, что вы хотите его закрыть.

Удерживая Homeкнопку, просто перечислите последние 6 открытых приложений, а не запущенное.
@Loïc: у меня показывает 8.
@LoicWolff, AlEverett Это зависит от используемой программы запуска и самого ПЗУ.
Это не совсем так. Действия не выполняются в фоновом режиме на Android.

В меню некоторых приложений есть пункт «Выход». Большинство этого не делает.

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

Обновление : AndroidSpin провел некоторые исследования в реальном мире .

Хорошая ссылка, ти :)

Действия не выполняются в фоновом режиме

В Android действия (то есть та часть приложения, которую вы видите) никогда не выполняются в фоновом режиме. Они могут работать (и использовать заряд батареи) только тогда, когда они на экране. Действие перестает выполняться независимо от того, используете ли вы дома или обратно , чтобы выйти из него. Единственная разница заключается в том, какие данные Android запрашивает у приложения для сохранения, поэтому ни один из вариантов не является «правильным». Это просто зависит от того, что вы хотите сделать.

Дом

Если вы используете home , Android оставляет приложение в том же состоянии, поэтому, если вы вернетесь к нему позже (например, через список последних приложений), оно останется в том же состоянии, в котором вы его оставили: на том же экране, с теми же показанными вещами. Например, если это почтовое приложение, и вы просматривали одно электронное письмо, оно запомнит, какое это было письмо, и покажет вам то же самое.

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

Назад

Если вы используете back , вы сообщаете Android, что не хотите возвращаться к этому представлению. Это сразу же уничтожит информацию о том, на что вы смотрели. В следующий раз, когда вы запустите приложение, оно отобразит передний экран (например, папку «Входящие»).

Как уже говорили другие, приложения могут управлять поведением кнопки « Назад » : например, веб-браузеры используют ее для возврата в историю браузера. То, что я описал, является поведением кнопки «Назад» по умолчанию, и разработчикам настоятельно рекомендуется сохранить такое поведение, чтобы избежать путаницы.

Кэшированные фоновые процессы

Какой бы метод вы ни использовали, Android будет оставлять приложение в памяти (но не работать) так долго, как это возможно. Это для большей эффективности. Когда вы вернетесь к приложению, если оно все еще находится в памяти, Android сможет сразу запустить его снова; если его еще нет в памяти, Android должен снова тратить время и энергию на загрузку приложения из хранилища.

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

Как насчет фоновых приложений?

Ранее я говорил, что действия не выполняются в фоновом режиме. Так как же ваш почтовый клиент проверяет почту? Помимо действий, приложения могут иметь службы . Службы не имеют графического интерфейса, который вы могли бы видеть или с которым можно взаимодействовать, но они работают в фоновом режиме. Обычно служба запускается нечасто, например, для проверки почты раз в час, но разработчик приложения может запускать службу постоянно, разряжая аккумулятор.

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

Резюме

Таким образом, на самом деле не имеет значения, используете ли вы back или home : это только меняет то, что приложение показывает вам в следующий раз, когда вы его запускаете. Это не влияет на использование батареи. Ни один из них не соответствует «закрытию» программы на вашем ПК.

Я так рад, что кто-то засветил это! Я разработчик, но я работал в Verizon Wireless, и я не могу сказать вам, сколько людей были обеспокоены этим, когда в этом не было необходимости.

В Android приложения никогда не нужно закрывать, и ОС заботится об очистке памяти любых оставшихся приложений, когда ресурсы нужны где-то еще. Использование таск-киллера просто нарушит нормальную работу ОС и может даже замедлить работу устройства, потому что приложения всегда придется перезагружать с самого начала.

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

При этом разработчик приложения несет ответственность за отслеживание жизненного цикла приложения, когда он создает свое приложение, поэтому могут возникнуть некоторые ошибки или ошибки, которые приведут к тому, что приложение никогда не останавливается и не приостанавливается. Если вы столкнулись с таким приложением и что бы его закрыть вы можете это сделать через "Настройки" -> "Приложения" -> "Управление приложениями" выбрав "Принудительно остановить" в приложении.

Но я бы очень не рекомендовал использовать таск-киллер, постоянно работающий на устройстве.

Просто хочу добавить в ответ schwiz, что для переопределения функциональности кнопки «Назад» требуется всего несколько строк кода. Так что не всегда надежно закрывать приложение. Поэтому, если разработчик приложения не хочет закрывать приложение при нажатии кнопки «Назад», оно не закроется.

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

Правильный ответ может быть таким: закрытие приложения полностью зависит от разработчика приложения, если они хотят, чтобы приложение закрывалось при нажатии кнопки «Домой», они помещают код выхода в onPause(). Если они хотят, чтобы это было на кнопке «Назад», они поместят это в файл onBackKeyPressed. Так что на самом деле это не в руках пользователя.

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

ОС закрывает приложение всякий раз, когда это необходимо, поэтому вам не следует слишком беспокоиться об этом.

Редактировать:
есть возможность уничтожить приложения, как только вы покинете приложение, то есть когда вы нажмете клавишу «Домой». Вы можете перейти Settings-> Developer Options-> Don't keep Activities. Хотя это вариант для разработчиков, но если вас слишком беспокоят приложения, работающие в фоновом режиме, вы можете использовать этот вариант. Но имейте в виду, что его не рекомендуется использовать не разработчикам.