Handler理解

Android是基于消息机制来运行的. 在 主线程也就是 ActivityThread 里,会给当前线程创建Looper,MessageQueue对象, 而 Handler也只是一个处理者.

消息类型分为:

  1. 同步屏障(同步消息): messge 的 target = null
  2. 异步消息 : message 的 isAsynchronous = true
  3. 同步消息

同步屏障有什么作用,作用就是让异步任务尽快被执行.在 Android里面被最直观的运用就是调用 requestLayout,在调用这个方法的时候,会先添加一个同步屏障,然后扔进去了一个异步任务用于view的测量布局绘制. 毕竟让用户看到页面响应是最重要的事情.

了解消息机制的原理,你还可以进行卡顿分析,这是如何做到的. 在ActivtiyThead里面,处理一个消息前会打印 <<<< 这个内容, 然后在消息处理结束会打印 >>>>> ,这个时候,你就可以通过监测两个打印的相差时间就能计算一个消息运行了多久了.