工作流程:
Handler 将Message 发送至MessageQueue 消息队列,然后Looper从MessqgeQueue中取出消息发送给Handler,
Handler在处理Message 对象和Runnable对象。
主线程创建一个Looper looper.prepare()
public static final void prepare() {
if (sThreadLocal.get() != null) {
throw new RuntimeException("Only one Looper may be created per thread");
}
sThreadLocal.set(new Looper(true));}
进行非空判断说明主线程只有一个looper
loop() 中创建了MessageQueue 说明只有一个消息队列
.loop()就是从消息队列中不断的轮询出Message,
MessageQueue中进入死循环 ,不断的next()方法取出message
Message 有一个targer dispatch分发给指定的handler
Handler的工作主要是包含消息的发送和接受的过程一个handler发送的消息只能被自己接收
message有 what arg1 arg2 data , 还有一个target 用target来标识handler