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

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

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

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

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

Я что-то упустил?

Ответ 1

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

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

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

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

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

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

Обе эти вещи приводят к памяти использование постоянно растет

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

и ваше устройство работает с этим все время

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

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

Ответ 2

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

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

Ответ 3

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

Здесь связанный вопрос:

Ответ 4

От Google Основы Android-приложений:

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

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

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

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

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

Ответ 5

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