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


69

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

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

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

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


Ответы:


48

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

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


1
Я заметил пару приложений , которые действительно едят через много батареи в этом состоянии паузы. А именно, последняя версия Google Maps и игра под названием GalaxIR. Так что следите за плохими правонарушителями и обязательно закройте их правильно.
Keithjgrant

1
вы ошибаетесь, если это съедает ваше тесто, которое является фоновым сервисом.
Натан Шверманн

5
Действительно возможно иметь приложение, которое не очень хорошо разработано и не соответствует жизненному циклу приложения Android. Например, поток можно оставить активным в действии даже после того, как он был приостановлен операционной системой (нажав Home), в этом случае приложение продолжит использовать батарею.
jmbouffard

1
Я обнаружил, что многие приложения не закрываются при нажатии кнопки «Назад». Например: Пандора, G
Клэй Николс

1
(мое время редактирования истекло) .... другие приложения, которые не закрываются при нажатии кнопки «Назад»: Pandora (которая продолжает играть даже после нажатия кнопки «Назад»), Google Play Store, FaceBook, Podkicker. Способ, которым я тестирую, заключается в том, чтобы нажимать кнопку «Назад», пока приложение не исчезнет (обычно это возвращает меня домой), а затем запустить Easy Task Killer.
Клей Николс

25

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

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


3
Удерживая Homeкнопку, просто перечислите 6 последних открытых приложений, а не запущенное.

@ Loïc: это показывает 8 для меня.
Эль

1
@LoicWolff, AlEverett Это зависит от используемого средства запуска и самого ПЗУ.
t0mm13b

Это не совсем так. Действия не работают в фоновом режиме на Android.
Дэн Халм

12

Некоторые приложения имеют опцию «Выход» в своих меню. Большинство не делает.

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

Обновление : AndroidSpin провел несколько реальных исследований .


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

7

Действия не работают в фоновом режиме

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

Главная

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

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

назад

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

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

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

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

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

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

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

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

Резюме

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


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

3

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

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

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

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


1

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

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

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

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

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

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

Используя наш сайт, вы подтверждаете, что прочитали и поняли нашу Политику в отношении файлов cookie и Политику конфиденциальности.
Licensed under cc by-sa 3.0 with attribution required.