首先我们要了解一下Looper机制:
app启动的时候,main()函数运行的时候,就为主线程创建了一个Looper ,
这个looper也是app和ActivityManegerService 通信的基础__app通过binder机制和系统服务ActivityManegerService 互通,从而实现四大组件的跳转, 而ActivityManegerService 发给app的事件就是通过handler 进一步处理的
看源码我们知道sendmessage /sendMessageDelay /sendEmptyMessage /post/postDelay最终都是执行了
sendMessageAtTime()
下面我们来看下sendMessageAtTime都做了什么?
1
2 将handler赋值给message.target
3MessageQueue中将根据message启动的时间when将message插入到message链的适当位置
MessageQueue.java
nativeWake()作用是唤醒MessageQueue.next()种的阻塞方法
pos/postDelay 源码
下面是handler分发message的时候,有callback回调的时候,则交给callback处理,这里的callback就是post的时候传入的callback