1
Looper和Handler
Looper用于封装消息循环,并持有一个消息队列
Handler封装消息投递,消息处理等接口
looper.prepare
1、prepare会调用线程的局部变量中设置一个Looper对象,这个调用线程就是LooperThread的run线程
looper构造方法
2、loop循环
looper的作用
a、封装了一个消息队列
b、prepare函数把Looper和调用prepare的线程绑定在一起
c、处理线程调用loop函数,处理来自该消息队列的消息
当事件源向Looper发消息时,其实是把消息加到Looper的消息队列里面,该消息由和Looper绑定的线程处理
Looper中有一个message队列,用来存储一个个待处理的message
message中有一个Handler,用来处理message
Handler
handler -> sendMessage --->实际是调用sendMessageDelayed(msg,0)
以当前时间为基础+延时时间,执行sendMessageAtTime
handler将自己设置为msg的target
Handler的消息处理:dispatchMessage
dispatchMessage定义了消息处理的优先级机制
a、message如果自带了callback,则交给callback处理
b、handler设置了全局的callback,交给callback处理
c、如果a,b都没有,则交给handler子类实现的handleMessage来处理,一般我们是使用的handleMessage来处理
Handler和Looper的同步