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