
简单的说,Handler获取当前线程中的looper对象,looper用来储存从MessageQueue中取出的Message,再由Handler进行Message分发和处置,按照先进先出执行。
MessageQueue(消息队列):用来存放通过Handler发送的消息,通常附属于某一个创建它的线程,可以通过Looper.myQueue()得到当前线程的消息队列。

Handler:是Message的主要处理者,负责Message的发送,Message内容的执行处理。例如将消息发送至消息队列(sendMessage),更新UI组件(实现该类的handleMessage方法)
Looper:是Handler和消息队列之间的通信桥梁,程序模块首先借助Handler把消息传递给Looper,Looper把消息传到队列。Looper也把消息队列里的消息广播给所有的Looper。

Message:消息的类别,理解为线程间交流的信息,处理数据后台线程必须升级UI,在Handler类中的handleMessage方法中受到单个的消息进行处理。
Handler机制的大致流程:

1.在Looper.loop()方法运行开始后,循环的依照接收顺序取出MessageQueue里面的非NULL的Message。
2.一开始MessageQueue里面的Message都是NULL的android单线程模型android单线程模型,当Handler.sendMessage(Message)到MessageQueue,该函数上面设定了那些Message对象的target属性是当前Handler对象。随后Looper取出了那些Message,则调用该Message的target指向的Handler的dispatchMessage函数对Message进行处理。在dispatchMessage方法里,如何处理Message则由用户选定,三个判断,优先级从高至低:

1)Message里面的Callback,一个实现了Runnable接口的对象,其中run函数做处理工作
2)Handler里面的mCallback指向的一个实现了Callback接口的对象,由其handleMessage进行处理。
3)处理消息Handler对象对应的类继承并推动了其中handleMessage函数,通过这个推动的handleMessage函数处理消息。
4)Handler处理完该Message后,Looper则设置该Message为NULL,以便回收。
本文来自电脑杂谈,转载请注明本文网址:
http://www.pc-fly.com/a/jisuanjixue/article-142816-1.html
进入人造岛礁
如果说那也算秀的话
选择新的
演员杨洋