为什么Looper.loop()不阻止UI线程

问题描述 投票:0回答:1

这是ActivityThread.main()中的代码:

    public static void main(String[] args) {

        ......

        Looper.prepareMainLooper();

        ...

        Looper.loop();

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

它使循环播放器开始运行。 Looper.loop()一直都在运行一个循环。为什么Looper.loop()不阻止UI线程?

android handler android-looper
1个回答
1
投票

[Looper.loop()准备Looper以运行传递到线程的消息。

它不会盲目地对其自身进行迭代,而是使用MessageQueue来监听消息并运行它们。

这是一种事件驱动的方法,当Looper通知它包含消息时,MessageQueue准备循环并运行消息。进一步了解android事件循环有效,请看一下此articleLooper.looop()source

© www.soinside.com 2019 - 2024. All rights reserved.