Одна вещь озадачивает меня. Похоже, что если я использую какую-либо программу на Android и нажимаю кнопку «домой», я вижу домашний экран и могу перезапустить программу и увидеть, что программа находится в том же состоянии, в котором она была раньше - так что программа выглядит не полностью перезапущенной, просто приостановлено, а затем возобновлено.
Тем не менее, похоже, что это не происходит в соответствии с игрой Air Control. Иногда, когда я играю в Air Control и нажимаю «домой», а затем снова запускаю Air Control - он приостанавливается (как будто я нажал кнопку «пауза»), и я могу возобновить игру. Иногда то же самое приводит к тому, что Air Control прекращает игру и начинает заново.
Похоже, я чего-то не понимаю.
В чем здесь дело? Что происходит с программой при нажатии «home»? Он продолжает работать или что он делает?
источник
Ответы:
Нажатие Homeпереключает вас из приложения на домашний экран, оставляя ваше приложение запущенным в фоновом режиме. Это немного похоже на переключение между окнами на ПК с Windows.
За исключением того, что, когда у вашего телефона заканчиваются ресурсы, такие как память, он начнет закрывать приложения, работающие в фоновом режиме, так что у вашего телефона будет достаточно ресурсов для того, что вы пытаетесь сделать сейчас. Игры часто являются одними из первых приложений, которые телефон «убивает» для экономии ресурсов, так как они часто используют гораздо больше памяти и процессора, чем другие приложения. Вот почему иногда ваша игра все еще работает на паузе, а иногда Android закрывает ее для вас.
BackКнопка способ закрывать приложения , так что они на самом деле закрыты.
Смотрите также Как правильно закрывать приложения в Android?
источник
Документ «Разработка Android» - « Задачи» и «Back Stack» («Задачи» и «Back Stack») на самом деле довольно хорошо это освещает. Соответствующая выдержка:
Описание : Задача перемещается в фоновый режим, когда вы нажимаете
Home
и сохраняете память, фактически ничего не делая и сохраняя свое состояние. Это означает, что (вообще говоря) вы можете переключиться обратно к задаче, и она подберется с того места, где остановилась. Однако система Android может - и будет - убивать фоновые задачи, если ей нужно восстановить память. Когда и если это происходит, полностью зависит от системы, и, вероятно, именно поэтому вы видите непоследовательное поведение при возобновлении работы.Если задача уничтожена системой, ее нужно будет заново создать при повторном запуске. Поэтому, если автор приложения не примет меры для сохранения состояния приложения во время процесса уничтожения, оно будет потеряно (и сохранение точного состояния в таких вещах, как игры, довольно непрактично).
Другой хороший (но также многословный) документ - это документ, охватывающий жизненный цикл деятельности (есть неплохая блок-схема, если немного прокрутить вниз).
источник
Нажатие клавиши «Домой» позволяет пользователю запустить новую задачу, показывая панель запуска. Все активные Задачи (и, следовательно, Действия, включая ваш пример "Air Control") будут вызывать свой
onPause()
метод.Приложение (и его активность) должны восстановить точное предыдущее состояние, когда оно снова станет видимым. Также возможно, что процесс приложений будет убит, пока действие будет фоновым, но это не должно влиять на работу пользователей. Пользователь не должен быть в состоянии определить разницу, если действие было просто приостановлено или оно также было убито. Это может объяснить различное поведение Air Control, что может быть признаком ошибочной реализации управления жизненным циклом Android.
источник
destroy()
соответствующих компонентов приложения.onStop
метод вызывается. Убитый процесс не означает, что у активности вызывается егоonDestroyed
метод, хотя он действительно похож. «Уничтожение» процесса Activity означает, что виртуальная машина удалена из RAM. Для меня это (Android убивает его), вероятно, повлияет на пользовательский опыт.Моя репутация на этом сайте все еще слишком низкая, чтобы голосовать, поэтому я отвечаю, чтобы подчеркнуть ответ Флоу. Я продолжаю сталкиваться с этой проблемой в одном из моих приложений. У меня есть различные элементы управления счетчиком, и вы должны явно сохранить их состояние в onPause (), а затем восстановить состояния в onResume () - Android не запоминает их состояния автоматически.
Другая сложность заключается в том, что Android иногда вызывает функцию onCreate () приложения, когда вы ожидаете, что она вызовет onResume ().
Таким образом, ваша проблема с Air Control (или любым другим приложением) относится именно к этому приложению, и вы должны сообщить о поведении разработчику для исправления. У большинства приложений есть контактный адрес электронной почты в Маркете.
Кстати, если вы хотите понять жизненный цикл приложения, я рекомендую главу 2 «Привет, Android» Эда Бернетта, особенно рисунок 2.3.
источник
Кнопка Домой Нажимается, когда в приложении:
Большинство приложений сохранят свое состояние (любой бит данных, который понадобится для поддержания согласованности при возобновлении), и устройство переключится на приложение запуска.
Кнопка Домой Нажимается, когда на главном экране:
Это настраивается многими сторонними программами запуска; однако многие из них по умолчанию возвращают вас на ваш «главный» домашний экран (по умолчанию запускается это).
Что может беспокоить вашего друга:
Переключение приложений может занимать много памяти и приводить к записи нескольких дисков для сохранения данных. Это использует батарею; однако, как правило, это не является основной причиной разряда батареи на устройствах (операционные системы оптимизированы для этих целей).
Некоторые приложения продолжат работу в качестве фонового приложения, поэтому нажатие кнопки «Домой» не убьет их (например, Google Play Music все равно будет воспроизводиться после нажатия кнопки «Домой»).
Ваш друг может быть обеспокоен тем, что, нажав кнопку «Домой», вы не вышли из программы, и поэтому она все еще работает. Android будет выгружать эти приложения по мере необходимости.
Вы и ваш друг должны больше заботиться о дисплее, который потребляет наибольшее количество энергии.
источник