Handler 机制
2017-06-13 14:34:51 4 举报
Handler 机制: Handler 发送消息、MessageQueue接收消息、Looper分发消息、Handler处理消息
作者其他创作
大纲/内容
返回一个message对象
Looper
getPostMessage(Runnable r)方法把r赋值给了message 的callback变量
MessageQueue
next()方法中也有一个无限循环,只有找到合适的message才会返回;此循环终止
handleMessage(msg)
如果得到的message不为null
否
Handler
是
Handler通过Looper获取MessageQueue
handleCallback()方法会去msg.callback.run()方法
mCallback.handleMessage(msg)
next()
dispatchMessage(Message msg)
post()和postDelayed()方法都会通过getPostMessage()方法来得到一个Message对象,从而传给sendMessageDelayed()方法
通过MessageQueue的next()方法获取message对象
when变量是一个long类型的,表示绝对时间的毫秒数,越小表示时间越靠前,就越先执行
MessageQueue中的消息是采用链式存储结构,通过message.when变量进行排序;when小的放在前面
msg.callback==null
返回一个Message对象
loop()
post(Runnable r)
sendMessage(Message msg)
mCallback==null
返回队列的头元素,且此头元素message.when=now.when(now.when是当前绝对时间的毫秒数),否则进入下一循环,直到找到合适的message对象
handleCallback(Message message)
getPostMessage(Runnable r)
这三个方法是正真实现处理消息的逻辑
loop()方法是一个无限循环方法,每次循环都去MessageQuque中取数据,而且会一直循环
mCallback是handler的成员变量,是Callback类型的,在Handler的构造方法中赋值
0 条评论
下一页