Handler - 消息的发送者和最终消费者
首先:Handler的初始化、需要重写 handleMessage()方、而该方法就是最终的消费的地方
然后:Handler发送消息的方法,所有的sendMessage和post方法最终都是调用个sendMessageAtTime()方法再调用enqueueMessage()方法
最后是调用的是 mQueue.enqueueMessage() handler的初始化可以看出 handler 中的Looper和mQueue 是 Looper.myLooper()方法获得的
获取mLooper对象 sTheradLocal的初始化方法prepare初始化sThreadLocal、而prepare参数是在线程初始化的时候需要调用
ui线程初始化而MessageQueue的enqueueMessage()方法 最主要的作用则是将所有Message以一种链表结构串起来。
MessageQueue.enqueueMessage()将message串起来最后再回到Looper类。ui线程的初始化中都会在最后调用Looper.loop() 来看一下这个方法
loop( ) 实际就是开启了一个死循环、不停的从MessageQueue中拿出message执行那么最终执行者就是Message对象中target属性的dispatchMessage方法
Message. target 就是一开始 发消息的handler 发现没有这个就是我们重写的方法最后发现调用我们重写的方法。
网友评论