Готовый перевод Asynchronous Android Programming. Second Edition. / Асинхронное программирование на Android. Второе издание.: Модель Android процесса

Модель Android процесса

Android — многопользовательская многозадачная система, которая может запускать параллельно несколько приложений, где все приложения пытаются получить процессорное время для выполнения своей работы.

Каждое приложение запускается независимо в изолированном Linux процессе, клонированном из процесса Zygote, и по умолчанию, все компоненты Android запускаются в том же процессе с тем же именем, как пакет прикладных программ точно сформулированный в Манифесте Android Приложений (Android Application Manifest, AAM).

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

Ранги процессов

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

И тогда ранги процессов проявляют себя; процессы Android занимают места в следующих пяти категориях, от процессов с высоким до процессов с низким приоритетом:

  • Приоритетный процесс — процесс, который содержит в себе активность или сервис с которыми взаимодействует пользователь: сервис, запускающийся напереднем плане, или сервис, выполняющий обратные вызовы жизненного цикла

  • Видимый процесс — процесс, на котором приостановлена либо активность, либо служба, связанная с видимой деятельностью

  • Процесс обслуживания — процесс, чья деятельность не связана с видимой активностью

  • Фоновый процесс — процесс, не имеющий видимой активности; все фоновые процессы сортируются по списку недавно использованных (Least-Recently-Used (LRU) list), следовательно, наиболее используемые процессы будут удалены в последнюю очередь, несмотря на то что они одного ранга

  • Пустой процесс — процесс, использующий незадействованный компонентами кэш, и использующий наилучшим образом время запуска компонента (П.П. если честно, здесь я и сам немного не понял)

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

Процесс песочницы

Приложения всегда стартуют под уникальным Linux пользовательским индентификатором (user ID, UID), назначенным приложению во время инсталяции, так процесс запускается в изолированной среде (П.П. в той самой "песочнице"), что по умолчанию, изолирует ваши данные и выполненный код из других приложений.

В некоторых случаях, пользователю явно может понадобиться поделиться UID с другими приложениями для получения их данных:

Предыдущая таблица является результатом выполнения команды adb shell ps на компьютере с Android SDK Table, и представляет собой список запущенных процессов Android.

В первой колонне показан идентификатор пользователя (UID) назначенный во время установки, вторая колонна — ID процесса (PID), в третьей колонне показан родительский процесс ID (parent process ID, PPID), что для этих приложений есть свой Zygote, и в последней колонне показан прикладной пакет.

Из этого списка, мы можем быть уверены, что WhatsApp запущен под пользовательским ID u0_a221 с ID процесса 5993 и родительский процесс — Zygote с PID 319.  

http://tl.rulate.ru/book/12504/321267

Обсуждение главы:

Еще никто не написал комментариев...
Чтобы оставлять комментарии Войдите или Зарегистрируйтесь