Почему Android и iOS не убивают процесс, когда приложение закрыто?

1

В Windows, MacOS и Linux, когда приложение закрыто, нормой является то, что его процесс также убивается. Это происходит по умолчанию в Windows/Linux, а в MacOS все еще кажется хорошей идеей нажать CMD + Q, чтобы завершить процесс, когда окно приложения не открыто.

На Android (и на iOS тоже), когда приложение работает в фоновом режиме, его процесс продолжает жить в памяти, пока ОС не сочтет необходимым вытолкнуть его. Процесс может быть прерван, но этот шаг не является поведением ОС по умолчанию, и UX несколько препятствует этому.

Зачем?


Обновить

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

Теги:
mobile
memory-management

4 ответа

2

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

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

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

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

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

Ссылка: androidtipsandhacks.com

0

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

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

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

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

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

С другой стороны, если вы хотите рассмотреть не батарею, а преимущества возобновления/запуска приложения, то на самом деле такая функция уже реализована в обоих типах ОС, но совсем по-другому. Например, в Windows вы можете свернуть программу, это то же самое, что нажатие кнопки "Домой" в Android. Чтобы закрыть его, нажмите кнопку x в углу или параметр выхода из программы, что будет похоже на переход к диспетчеру задач приложений Android (история последних приложений) и уничтожение приложения.

0

Согласно документации, в приложении для Android есть 4 состояния процесса приложения.

Давайте посмотрим на несколько случаев.

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

2. В приложении запущены Activity и Service. Пользователь нажимает кнопку домой.
В этом случае статус приложения будет перемещен с Foreground на Service.
Состояние Service используется для процессов, которые выполняют неважные фоновые задания. В этом случае процесс сохраняется, потому что он имеет некоторую фоновую работу. Конечно, вы можете переместить свою Service в отдельный процесс, но это не стандартное поведение.

3. Приложение имеет запущенную Activity и приоритет Service. Пользователь нажимает кнопку домой.
В этом случае статус приложения будет перемещен с Foreground на Visible.
Visible состояние используется для процессов, которые видны пользователю, но он не взаимодействует с ним напрямую. Service Foreground используется для выполнения важной фоновой работы и поддерживает процесс в состоянии Visible. Снова UI и Background части приложения по умолчанию размещаются в одном процессе.

0

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

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

Ещё вопросы

Сообщество Overcoder
Наверх
Меню