01. handler整体架构方案原理
2022年4月11日
01. handler整体架构方案原理
参考相关文章及视频
1、Handler负责发送Message和处理Mesage
2、Message就是消息载体,可用what区分,也可传递对象
3、Message Queue消息队列,存储Message,先进先出
4、Looper循环取出Message Queue里的Message交给Handler处理。
5、一个线程只有一个Looper和Message Queue,子线程中使用Handler一定要Looper.prepare()创建Looper,然后loop,主线程在应用启动时已经创建Looper。
形容起来就是一个快递员(handle),取到信件(message)就交到快递分拣处(message queue),再由快递公司(looper)进行派件(事件的发送和处理)
Handler和Binder基本覆盖了Applcation层和Framework层的通信
Handler 解决应用内通信问题
四大组件生命周期
Touch事件分发
进程内部通讯,以消息队列的形式驱动应用的运行
关键方法调用流 sendMessageAtTime --> enqueueMessage(queue,msg,uptimeMillis)-->MessageQueue.enqueueMessage(msg,uptimeMillis)-->MessageQueue.next()-->Looper.loop()-->Handler.dispatchMessage(msg)-->Handler.handlerMessage(msg)-->handleMessage(msg)
Looper.loop() 开启循环
Message是一个单向链表,MessageQueue持有Message引用, Handler和Message内部互相持有引用
MessageQueue
enqueueMessage(Message msg,long when) //逐行解析
Binder 进程间通信 AIDL接口定义语言
- home与AMS,WMS,PMS的通信,底层服务之前的通信
- 广播
- 跨进程通讯,并且通过 ServiceManager 给上层应用提供了大量的服务