一、消息机制相关概念的解释
1、主线程(UI线程)
定义:当程序第一次启动时,Android会同时启动一条主线程(Main Thread)
作用:主线程主要负责处理与UI相关的事件
2、Message(消息)
定义:Handler 接收和处理的消息对象(Bean对象)
作用:通信时相关信息的存放和传递
3、ThreadLocal
定义:线程内部的数据存储类
作用:负责存储和获取本线程的Looper
4、Message Queue(消息队列)
定义:采用单链表的数据结构来存储消息列表
作用:用来存放通过Handler发过来的Message,按照先进先出执行
5、Handler(处理者)
定义:Message的主要处理者
作用:负责发送Message到消息队列&处理Looper分派过来的Message
6、Looper(循环器)
定义:扮演MessageQueue和Handler之间桥梁的角色
作用:
1)消息循环:循环取出 MessageQueue的Message
2)消息派发:将取出的Message交付给相应的Handler
图片解读它们之间的关系
文字解读它们之间的关系
Looper中存放有MessageQueen,MessageQueen中又有很多Message==;当我们的Handler发送消息的时候,会获取当前的Looper,并在当前的Looper的MessageQueen当中存放我们发送的消息;而我们的MessageQueen也会在Looper的带动下,一直循环的读取Message信息,并将Message信息发送给Handler,并执行HandlerMessage()方法。
二、Android消息机制的通信流程图
三、源码分析
Looper源码分析
MessageQueen源码分析
Handler源码分析
参考:
Android进阶——Android消息机制之Looper、Handler、MessageQueen