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

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

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

Почему?


Обновление

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

Ответы [ 4 ]

2 голосов
/ 16 апреля 2019

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

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

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

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

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

Ссылка: androidtipsandhacks.com

1 голос
/ 16 апреля 2019

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

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

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

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

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

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

0 голосов
/ 16 апреля 2019

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

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

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

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

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

0 голосов
/ 16 апреля 2019

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

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

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