Android 的主线程就是 ActivityThread
,主线程的入口方法是 main
,在 main 方法中系统会通过,Looper.prepareMainLooper()
方法创建主线程的 Looper
以及 MessageQueue
,并通过 Looper.loop()
方式开启循环。
主线程开启后,ActivityThread
还需要一个 Handler
来和消息队列进行交互,这个 Handler
就是 ActivityThread.H
,它内部定义了一组消息类型,主要包括了四大组件的启动和停止过程。
主线程的消息循环模型
ActivityThread
通过 Application
和 AMS
进行进程间的通信,AMS
以进程间通信的方式完成 ActivityThread
的请求后会回调 Application
的 Binder
方法,然后 ApplicationThread
会向 H
发送消息,H
收到消息后会将 ApplicationThread
中的逻辑切换到 ActivityThread
(主线程)中去执行。
什么是ApplicationThread:
ApplicationThread
是ActivityThread
(主线程)的内部类,也是一个Binder
对象。在此处它是作为IApplicationThread
对象的server
端等待client
端的请求然后进行处理,最大的client
就是AMS
.
网友评论