В следующем списке представлены различные типы процессов в порядке важности (первый процесс наиболее важен, а последний уничтожается):
- Процесс переднего плана
- Видимый процесс
- Процесс обслуживания
- Фоновый процесс
- Пустой процесс
Примечание: Android ранжирует процесс на самом высоком уровне, который может, исходя из важности компонентов, активных в данный момент в этом процессе. Например, если процесс размещает службу и видимую активность, процесс оценивается как видимый процесс, а не как процесс службы.
Отсюда ссылка Процессы и потоки
EDIT:
Понимание приоритета приложения и состояний процесса
Порядок, в котором процессы уничтожаются для восстановления ресурсов, определяется приоритетом размещенных приложений. Приоритет приложения равен компоненту с самым высоким приоритетом.
Если два приложения имеют одинаковый приоритет, процесс с более низким приоритетом будет длиться дольше. На приоритет процесса также влияют межпроцессные зависимости; если приложение зависит от поставщика услуг или контента, предоставляемого вторым приложением, вторичное приложение будет иметь по крайней мере такой же высокий приоритет, как и приложение, которое оно поддерживает.
Все приложения Android будут работать и оставаться в памяти, пока система не будет нуждаться в ресурсах для других приложений.
Важно правильно структурировать приложение, чтобы его приоритет соответствовал выполняемой им работе. Если вы этого не сделаете, ваше приложение может быть убито, пока оно находится в центре чего-то важного.
Следующий список подробно описывает каждое из состояний приложения, показанных на рисунке, и объясняет, как это состояние определяется составляющими приложения:
Активные процессы Активные (на переднем плане) процессы - это те, на которых размещаются приложения с компонентами, в настоящее время взаимодействующими с пользователем. Это процессы, которые Android пытается поддерживать, восстанавливая ресурсы. Обычно таких процессов очень мало, и они будут убиты только в крайнем случае.
Активные процессы включают в себя:
1.Деятельность в «активном» состоянии; то есть они находятся на переднем плане и отвечают на пользовательские события. Подробнее о состояниях активности вы узнаете позже в этой главе.
2.Деятельность, Службы или Приемники вещания, которые в настоящее время выполняют обработчик события onReceive.
3.Услуги, которые выполняют обработчик событий onStart, onCreate или onDestroy.
Видимые процессы Видимые, но неактивные процессы - это те, на которых размещены «видимые» действия. Как следует из названия, видимые действия видимы, но они не находятся на переднем плане и не реагируют на пользовательские события. Это происходит, когда действие только частично скрыто (не полноэкранным или прозрачным действием). Обычно видимых процессов очень мало, и они будут убиты только в экстремальных обстоятельствах, чтобы позволить активным процессам продолжаться.
Запущенные процессы обслуживания Процессы размещения служб, которые были запущены. Службы поддерживают текущую обработку, которая должна продолжаться без видимого интерфейса. Поскольку Сервисы не взаимодействуют напрямую с пользователем, они получают немного более низкий приоритет, чем видимые Действия. Они по-прежнему считаются приоритетными процессами и не будут уничтожены, если не потребуются ресурсы для активных или видимых процессов.
Background Processes Хостинг процессов. Действия, которые не видны и у которых нет запущенных Сервисов, считаются фоновыми процессами. Как правило, будет большое количество фоновых процессов, которые Android будет уничтожать, используя шаблон «видел первым убитым» для получения ресурсов для процессов переднего плана.
Пустые процессы Чтобы повысить общую производительность системы, Android часто сохраняет приложения в памяти после окончания срока их службы. Android поддерживает этот кэш, чтобы сократить время запуска приложений при их повторном запуске. Эти процессы обычно убиваются по мере необходимости.
Для получения дополнительной информации смотрите здесь (я нашел в этом блоге) Управление памятью в Android
EDIT:
I think Android is basic Linux so, whatever scheduler works for Linux is same in Android.
Разница между планировщиком Android и планировщиком Linux
Планировщик - 5 файлов - Ядро Android также содержит небольшие изменения в планировщике процессов ЦП и алгоритмах учета времени. Мы не знаем историю этих изменений, и влияние не было очевидным, если судить по беглому экзамену.
Выработка процесса:
Как уже упоминалось, операционная система Linux является преимущественной. Когда процесс переходит в состояние TASK_RUNNING, ядро проверяет, является ли его приоритет выше приоритета выполняющегося в данный момент процесса. Если это так, планировщик вызывается, чтобы выбрать новый процесс для запуска (предположительно, процесс, который только что стал работоспособным). Кроме того, когда временной интервал процесса достигает нуля, он прерывается, и для выбора нового процесса вызывается планировщик.
Политика планирования в действии
Рассмотрим систему с двумя выполняемыми задачами: текстовым редактором и видеокодером. Текстовый редактор связан с вводом / выводом, потому что он тратит почти все свое время на ожидание нажатия клавиши пользователя (независимо от того, насколько быстро пользователь печатает, он не такой быстрый). Несмотря на это, когда он получает нажатие клавиши, пользователь ожидает, что редактор ответит немедленно. И наоборот, видеокодер привязан к процессору. Помимо чтения потока необработанных данных с диска и последующей записи полученного видео, кодировщик все свое время проводит, применяя видеокодек к необработанным данным. Он не имеет каких-либо жестких временных ограничений на время его запуска - если он начал работать сейчас или через полсекунды, пользователь не мог сказать. Конечно, чем раньше он закончится, тем лучше.
В этой системе планировщик предоставляет текстовому редактору более высокий приоритет и больший временной интервал, чем у видеокодера, поскольку текстовый редактор является интерактивным. В текстовом редакторе доступно множество временных интервалов. Кроме того, поскольку текстовый редактор имеет более высокий приоритет, он может вытеснять видеокодер при необходимости. Это гарантирует, что текстовый редактор способен реагировать на нажатия клавиш пользователя немедленно. Это в ущерб видеокодеру, но поскольку текстовый редактор работает только периодически, видеокодер может монополизировать оставшееся время. Это оптимизирует производительность обоих приложений.