Android核心分析 之十一-------Android GWES之消息系统
原文地址:http://blog.csdn.net/maxleng/article/details/5552976
?
?
?
?
?
?
Handler属于某个线程,取决Handlerd对象在哪个线程中建立。Handler在构建时做了如下的默认动作:
l?从线程上下文取得Looper。l?通过Looper获取到消息队列并记录在自己的成员mQueue变量中?
Handler使用消息队列进行对象封装,提供如下的成员函数:
?
l?通过??post(Runnable?r)发送。Runnable是消息处理的回调函数,通过该消息的发送,引起Runable?的回调运行,Post消息放置消息队列的前面。Message.callback=Runable.l?通过?sendMessage发送。放置在所有的Post消息之后,sendMessage发送消息.l?dispatchMessage分发消息。消息带有回调函数,则执行消息回调函数,如何没有则使用默认处理函数:handleMessage。而handleMessage往往被重载成某个继承Handler对象的新的特定的handleMessage。几乎所有的Message发送时,都指定了target。Message.target=(this).
?
?
?
?
Looper运行在Activity何处?我们现在可以从代码堆栈中纵观一下Looper的位置。
?
NaiveStart.main()
ZygoteInit.main
ZygoteInit$MethodAndArgsCall.run
Method.Invoke
method.invokeNative
ActivityThread.main()
? Looper.loop()
ViewRoot$RootHandler().dispatch()
handleMessage
....