Отели Белека

22.06.2016

Каждое запускаемое приложение ОС Android содержит несколько потоков* объединённых в Linux-нроцессс и в виртуальной машине Dalvik с целью управления внутренним выполнением данного приложения. В приложении всегда существуют системные потоки, например поток пользовательского интерфейса (U 1-поток) и связующие потоки, но, кроме того, приложение создаст собственные фоновые потоки. В этой главе мы заглянем немного глубже в недра операционной системы Android и рассмотрим следующие темы:

сходства и различия между UI-потоком, связующими потоками и фоновыми потоками;

связь с потоками ядра Linux;

как ранг процесса приложения влияет на планирование потоков;

выполнение потоков ядра Linux.

Потоки приложения ОС Android

Все потоки приложении базируются на низкоуровневых потоках pthreads в ядре Linux и их представлении Thread в Java, при этом платформа Android назначает потокам дополнительные, отличительные свойства. С точки зрения приложения существуют три типа потоков: U 1-поток (поток пользовательского интерфейса), связующие потоки и фоновые потоки. Уже решили где хотите провести отпуск? Тогда посмотрите отели белека.

Связующие потоки (binder threads) используются для взаимодействий между потоками, работающими в разных процессах. Каждый процесс поддерживает набор потоков, обозначаемый термином «пул потоков» (thread pool), где потоки никогда не завершаются и не создаются заново, могут инициализировать выполнение задач по запросу другого потока в этом же процессе. Эти же потоки обрабатывают входящие запросы от других процессов, в том числе от системных служб, объектов Intent, коптепт-нровайдеров и прикладных сдужб. При необходимости для обработки входящего внешнего запроса создаётся новый связующий поток. В большинстве случаев приложение не обязано уделять внимание связующим потокам, поскольку платформа обычно сама передаёт запросы в U 1-поток для обработки. Исключением является случай, когда приложение предлагает некоторую услугу (Service), связь с которой может быть установлена из другого процесса через интерфейс AIDL.