Handler机制

95 阅读1分钟

Handler机制

Handler机制是Android中基于消息队列的线程间通讯机制,符合事务驱动型设计,主要作用有:

  • 切换代码执行线程
  • 顺序处理消息,有效避免并发
  • 阻塞线程,避免线程退出
  • 延迟处理消息

Handler机制涉及到Handler、Looper、MessageQueue三个关键类。其中:

  • Looper通过ThreadLocal实现线程单例
  • MessageQueue通过next和enqueue方法(底层通过epoll)实现消息获取和线程等待,并且支持IdleHandler能力
  • Handler通过post、sendMessage实现消息和Runnable的跨线程执行
public void dispatchMessage(@NonNull Message msg) {
    if (msg.callback != null) {
        handleCallback(msg);
    } else {
        if (mCallback != null) {
            if (mCallback.handleMessage(msg)) {
                return;
            }
        }
        handleMessage(msg);
    }
}

为了提供优先级能力,对于Msg.target == null的消息为同步屏障消息,只有异步消息能跨越同步屏障

参考文献