Handler 机制导读

除了Binder 进程间通信机制,Handler 机制可能是Android 最重要的机制了。Android 应用应用程序是通过消息来驱动的。我们一起来看下Handler 涉及到的内容。

Handler 原理

Handelr 原理

  1. Looper#loop 死循环从MessageQueue 中获取Message 执行。
  2. Handler 通过send/post 向MessageQueue 中add Message,通过remove 从MessageQueue 中remove Message。
  3. MessgaeQueue 中没有Message 时阻塞,但是不消耗cpu 资源。

Handler 初始化流程

Handler 初始化流程

  1. Looper#prepare,最后epoll_create 创建epoll 句柄,epoll_ctl 将被监听的描述符添加到epoll句柄。
  2. Looper#loop,最后epoll_wait 等待事件触发。

Handler sendMessage 流程

Handler snedMessage 流程

  1. MessageQueue#enqueueMessage,将Message 加入到MessageQueue。
  2. MessageQueue#nativeWake,最后write 唤醒epoll_wait 的Task。

IO 复用

IO 复用

参考

IO 多路复用是什么意思?
epoll 的本质是什么?:入门
Android中为什么主线程不会因为Looper.loop()里的死循环卡死?
我读过的最好的epoll讲解–转自”知乎“
IO多路复用的三种机制Select,Poll,Epoll
为什么epoll会那么高效
select/poll/epoll对比分析