一直对Handler的有关知识理解不够为,记录一下。
1.Handler的作用:
(1)传递消息Message:
(2)通过子线程向主线程通知UI:
由于Android中是不允许在子线程中更新UI的,因此在很多时候,更新UI操作要转移到主线程中进行。
2.Message,Handler,MessageQueue,Looper
参考了《第一行代码》这本书,记录一下各个部分的含义。
(1)Message:中文解释是消息。在线程之间传递的消息,可以在内部携带少量的信息在各个不同线程之间交换数据。通过Message.obtain()来创建对象。
(2)Handler:处理器
handler是message的处理器,同时也负责消息的发送和移除工作。
发送即时消息:handler.sendMessage(Message msg)
发送延时消息:handler.sendMessageDelayed(Message msg,long time)
处理消息:handleMessage(Message msg)
移除还未处理消息:handler.removeMessages(int what)
(3)MessageQueue:消息队列
主要用于存放所有通过Handler发送的消息。是一个按照Message的when排序的优先级队列。每个线程中只有一个MessageQueue对象。
(4)Looper:循环器
负责循环取出MessageQueue里面的当前需要处理的Message,交给对应的Handler处理,处理完后将Message缓存到消息池中,以备复用。每个线程中也只会有一个Looper对象。