- Handler
a. Handler是android给我们提供的更新UI的一套机制,也是一套消息处理机制,我们可以
用来发送消息,也可以通过它处理消息。
b. Activity的生命周期回调底层就是通过handler实现的
c. Handler的用法:
i. handler.postRunnable()
ii. Handler.sendMessage()和handler.handlerMessage()
iii. Message可以通过arg1和arg2带整形参数,也可以通过obj带一个对象参数
iv. Handler.removeCallbacks(Runnable runnable)可以从handler中移除一个消息
v. 通过new Handler(Callback callback)构造函数,通过callback函数的返回值是否为true,
可以截断handler发送的消息,从而让callback来处理消息,而不会调用到handler对象自身的handleMessage方法如图:
d. Handler的原理是什么?Handler,Looper,MessageQueue的关系。
i. Handler:是封装消息的发送,即向消息队列中添加一条消息。
ii. Looper:内部包含一个消息队列也就是MessageQueue,所有的Handler发送的消息
都走向这个消息队列。通过Looper.loop死循环不断读取队列中的消息并发送到message
的target(handler自己)。
Looper.loop关键代码:
iii. MessageQueue,就是一个消息队列,可以添加消息并将消息发送回handler自己
iv. 总结:Handle负责发送消息,Looper负责接收Handler发送的消息,并直接把消息
回传给handler自己,MessageQueue就是一个存储消息的容器。
v. 自定义与线程相关的handler