или ожидании(wait()), то по логике вещей, получается,что ивенты (клики и прочее) у нас принимает другой тред?Есть сорсы где можно про это почитать?
Если главный поток повис то будет ANR
Нет, тот же поток, обработка системных сообщений находится на главном потоке, для андроид приложения
Насколько я понял,главный поток,после выполнения необходимой работы(при старте приложения) входит в бесконечный цикл и обрабатывает месседжы.Я не совсем понимаю,как он может реагировать на ивенты извне,если он при этом постоянно занят.Какой то поток ведь должен класть сообщения в очередь и уведомлять главный о том,что есть новый месседж?!
Ну смотри, работает это по такому простому принципу (это не конкретно прям в андроид ос, а в общем) берем месседж ага, месседж есть обрабатываем (это может быть отрисовка, тач и т.д) берем месседж ...
Если в общих чертах, то тыкаешь экран, железо это детектит, первично обрабатывает, передает андроид фреймворку, он делает какие-то свои шаги и передает событие текущей видимой активити и соответственно если главный поток ее приложения заблокировн, то этот клик приложение не обрабатывает пока не закончит задачу, rоторая его блочит
ну и передача идет месседжами, как выше сказали. Почитай про хендлеры, луперы
Так после прочтения про хендлер и лупер у меня и возник этот вопрос.Я просто не понимаю как главный поток может реагировать на клики и прочее,если он постоянно занят проверкой на наличие сообщений и их обработкой.Насколько я понял по вашим словам,месседжы в очередь сообщений все же кладет какой то системный поток,а главный поток приложения затем обрабатывает его.
Если он в бесконечном лупе то поздравляю - ты завесил приложение, оьрабатывать тыки некому и через 5 секунд вылетит ошибка ANR
Обсуждают сегодня