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

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

Я люблю многозадачность и все, но мне не понятно почему:

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

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

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

Ответы [ 5 ]

15 голосов
/ 14 марта 2010

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

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

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

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

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

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

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

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

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

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

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

8 голосов
/ 14 марта 2010

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

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

1 голос
/ 14 марта 2010

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

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

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

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

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

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

1 голос
/ 14 марта 2010

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

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

0 голосов
/ 04 июня 2011

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

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...