Почему Looper.loop() не блокирует поток пользовательского интерфейса

Это код в ActivityThread.main():

    public static void main(String[] args) {

        ......

        Looper.prepareMainLooper();

        ...

        Looper.loop();

        throw new RuntimeException("Main thread loop unexpectedly exited");
    }

Это заставило Looper работать. В Looper.loop() постоянно работает цикл. Почему Looper.loop() не блокирует поток пользовательского интерфейса?


person Yt100    schedule 14.11.2019    source источник
comment
Отвечает ли это на ваш вопрос? Почему основной поток Looper.loop() не блокирует поток пользовательского интерфейса ?   -  person Jakir Hossain    schedule 14.11.2019
comment
Нет. Я видел это до того, как задал вопрос.   -  person Yt100    schedule 14.11.2019


Ответы (1)


Looper.loop() подготавливает Looper к запуску сообщений, которые передаются в поток.

Он не перебирает себя вслепую, а использует MessageQueue для прослушивания сообщений и запускает их.

Это методология, управляемая событиями, когда Looper готов зацикливать и запускать сообщения, когда MessageQueue уведомляет его о том, что он содержит сообщения. Чтобы узнать больше о том, как работает цикл событий Android, взгляните на этот статья. Лупер.looop()

(источник)

person Chrisvin Jem    schedule 14.11.2019