消息循环创建过程

基于Android U

应用程序进程启动后会创建消息循环。

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
frameworks/base/core/java/android/app/ActivityThread.java
public static void main(String[] args) {
...
Looper.prepareMainLooper(); // 1
...
ActivityThread thread = new ActivityThread(); // 2
thread.attach(false, startSeq);

if (sMainThreadHandler == null) { // 3
sMainThreadHandler = thread.getHandler(); // 4
}
...
Looper.loop(); // 5

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

ActivityThread类用于管理当前应用程序进程的主线程。

注释1处创建主线程的消息循环Looper;

注释2处创建ActivityThread;

注释3处判断Handler类型的sMainThreadHandler是否为null,如果为null,则在注释4处获取H类并赋值给sMainThreadHandler,这个H类继承自Handler,是ActivityThread的内部类,用于处理主线程的消息循环;

注释5处调用Looper#loop(),使得Looper开始处理消息。

可以看出,系统在应用程序进程启动完成后,就会创建一个消息循环,这样运行在应用程序进程中的应用程序可以方便地使用消息处理机制。


消息循环创建过程
https://citrus-maxima.github.io/2024/03/09/消息循环创建过程/
作者
柚子树
发布于
2024年3月9日
许可协议