Почему Android-приложения не предоставляют опцию «Выход»?

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

Мне нравится многозадачность и все, но мне непонятно почему:

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

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

Я что-то упускаю?

Solutions Collecting From Web of "Почему Android-приложения не предоставляют опцию «Выход»?"

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

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

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

Они не продолжают бегать вечно. Android закроет все по мере необходимости.

Не делайте выбор по запуску при включении телефона – они просто делают по умолчанию

Эти разработчики не обращают на меня внимания .

Обе эти вещи постоянно увеличивают использование памяти

Как правило, это не так. Если вы найдете конкретные приложения, которые делают это, удалите их.

И ваше устройство работает с этой производительностью все время

Как правило, это не так. Если вы найдете конкретные приложения, которые делают это, удалите их.

Кроме того, этот вопрос является дубликатом этого .

«Обе эти вещи постоянно увеличивают использование памяти»

Что не имеет значения, так как приложения для Android ограничены фиксированным объемом оперативной памяти. Освобождение ОЗУ не даст больше ОЗУ другим приложениям.

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

Вот связанный с этим вопрос :

На странице « Основы Android для Android» :

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

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

Активность можно отключить, вызвав метод finish (). Одно действие может отключить другую активность (начатую с startActivityForResult ()), вызвав функцию finishActivity (). Службу можно остановить, вызвав метод stopSelf (), или вызвав Context.stopService (). Компоненты также могут быть отключены системой, когда они больше не используются или когда Android должен вернуть память для более активных компонентов. В более позднем разделе «Компонент Lifecycles» более подробно обсуждается эта возможность и ее последствия.

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

Что касается Деятельности, я бы возражал в пользу ее прекращения, но в некоторых случаях. Если ваше приложение имеет конечное состояние, в котором пользователь работает с ним, зачем его поддерживать до тех пор, пока GC не получит его? Диспетчер активности по-прежнему должен отслеживать эту активность, пока пользователь выполнил свою задачу. Мой лучший пример для этого – Калькулятор. Вы открываете его, у вас есть решение проблемы для вас, а затем вы его закрываете. Если функция onCreate настолько дорогая, что более эффективно делать onCreate один раз, а затем onRestart всякий раз, когда пользователь возвращается к вашему приложению, вы, вероятно, делаете что-то неправильно. Возможно, я неправильно истолковываю, как Android обрабатывает действия, и если так, я всегда заинтересован в обучении больше 🙂

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