Как Android управляет процессами
Windows позволяет настольным приложениям оставаться запущенными независимо от того, видны они или нет, в то время как iOS от Apple позволяет приложениям выполнять лишь несколько ограниченных задач в фоновом режиме. Android находится где-то посередине - приложения, работающие на переднем плане, имеют приоритет, но приложения имеют гораздо большую свободу работы в фоновом режиме, чем на iOS.
Мы рассмотрим, как именно Android управляет приложениями и процессами, запущенными на вашем телефоне или планшете, и рассказывает, что происходит в фоновом режиме..
Иерархия жизненного цикла процесса
Процесс на Android может находиться в одном из пяти различных состояний в любой момент времени, от наиболее важного до наименее важного:
- 1. Процесс переднего плана: Приложение, которое вы используете, считается приоритетным процессом. Другие процессы также могут рассматриваться как процессы переднего плана - например, если они взаимодействуют с процессом, который в настоящее время находится на переднем плане. Есть только несколько процессов переднего плана в любой момент времени.
- 2. Видимый процесс: Видимый процесс не на переднем плане, но все еще влияет на то, что вы видите на экране. Например, процесс переднего плана может быть диалогом, который позволяет вам видеть приложение позади него - приложение, видимое в фоновом режиме, будет видимым процессом.
- 3. Процесс обслуживания: Сервисный процесс не привязан ни к какому приложению, которое отображается на вашем экране. Тем не менее, он делает что-то в фоновом режиме, например, воспроизведение музыки или загрузка данных в фоновом режиме. Например, если вы начинаете воспроизводить музыку и переключаетесь на другое приложение, воспроизведение музыки происходит в фоновом режиме и обрабатывается сервисным процессом..
- 4. Фоновый процесс: Фоновые процессы в настоящее время не видны пользователю. Они не влияют на опыт использования телефона. В любой момент времени многие фоновые процессы в настоящее время работают. Вы можете думать об этих фоновых процессах как о «приостановленных» приложениях. Они хранятся в памяти, поэтому вы можете быстро возобновить их использование, когда вернетесь к ним, но они не используют ценное процессорное время или другие ресурсы, не связанные с памятью..
- 5. Пустой процесс: Пустой процесс больше не содержит данных приложения. Он может храниться в целях кэширования, чтобы ускорить запуск приложений позже, или система может уничтожить его при необходимости..
Например, допустим, вы включили телефон и открыли музыкальное приложение. Пока вы его используете, музыкальное приложение будет на переднем плане. Когда вы начинаете проигрывать музыку и выходите из музыкального приложения, музыка продолжает воспроизводиться как процесс обслуживания..
Давайте посмотрим на Angry Birds в качестве другого примера. Angry Birds будет основным процессом, пока вы играете в него. Когда вы выходите из Angry Birds и заходите в приложение Gmail, чтобы просмотреть свою электронную почту, Angry Birds становится фоновым процессом (потому что он не должен ничего делать в фоновом режиме), а Gmail становится основным процессом. Когда вы переключитесь обратно на Angry Birds, он станет вашим основным процессом, и игра быстро возобновится. Angry Birds не использовал ресурсы в фоновом режиме - кроме некоторой оперативной памяти - но он быстро возобновляется, потому что он остается в кэше и готов к возобновлению.
Android автоматически управляет процессами
Android хорошо справляется с автоматическим управлением этими процессами, поэтому вам не нужен убийца задач на Android.
Когда Android потребуется больше системных ресурсов, он начнет сначала убивать наименее важные процессы. Android начнет убивать пустые и фоновые процессы, чтобы освободить память, если у вас заканчивается. Если вам нужно больше памяти - например, если вы играете в особенно требовательную игру на устройстве без большого объема ОЗУ, Android начнет убивать служебные процессы, поэтому загрузка потоковой музыки и файлов может прекратиться..
В большинстве случаев Android делает все это без необходимости беспокоиться об этом. Android разумно использует оперативную память вашего устройства для кэширования приложений и других данных, потому что нет смысла оставлять вашу оперативную память пустой.
Конечно, Android предоставляет приложениям настолько большую гибкость, что у них есть место для неправильного поведения. Например, плохо закодированное приложение может запустить сервисный процесс, который все время работает в фоновом режиме, расходуя все ваше процессорное время и значительно сокращая время автономной работы..
Одна интересная вещь, которую вы заметите в антивирусных приложениях, таких как Avast! для Android это то, что антивирусное приложение использует значок уведомления. если вы попытаетесь отключить значок уведомления, Avast! буду рекомендовать против этого. Имея видимый значок уведомления, Avast! делает себя более приоритетным приложением, не позволяя Android считать его фоновым приложением и убить его.
Приложения Android могут запускаться в ответ на события
Приложения Android также могут запускаться в ответ на события. Например, разработчик может запрограммировать свое приложение на автоматический запуск при запуске и запуск службы в фоновом режиме. Приложения могут запускаться в ответ на множество других событий, например, когда вы делаете снимок, когда изменяется подключение к данным и т. Д. Это позволяет приложениям выполнять действия в ответ на события, не работая постоянно в фоновом режиме..
Управление процессами
Вам не нужно управлять процессами вручную, но есть несколько способов сделать это, если хотите. Вы можете использовать меню многозадачности в Android 4.0 и более поздних версиях, чтобы выполнить некоторые основные функции управления процессами. Чтобы получить к нему доступ, коснитесь специальной кнопки многозадачности на устройствах Nexus. На других устройствах Android вам, возможно, придется дважды нажать или нажать и удерживать кнопку «Домой»..
Приложения, отображаемые в меню, вероятно, находятся в состоянии «фонового процесса». Вы можете убить их, проводя приложение влево или вправо, которое удалит его из памяти вашего устройства. Это не должно быть необходимым, но может помочь, если вы хотите быстро убить приложение - возможно, оно плохо себя ведет.
Вы также можете перейти на экран «Настройки», нажать «Приложения», «Приложение» и использовать кнопку «Стоп», чтобы убить ненадлежащее приложение..
Android основан на Linux, и каждому приложению на Android назначается другой идентификатор пользователя Linux - или учетная запись пользователя. Это изолирует приложения друг от друга. Если вы рутируете свое устройство, приложения могут покинуть свои пользовательские песочницы и запускаться с привилегиями root..
Изображение предоставлено: JD Hancock на Flickr