源码分析Android Handler是如何实现线程间通信的

Handler作为Android消息通信的基础,它的使用是每一个开发者都必须掌握的。开发者从一开始就被告知必须在主线程中进行UI操作。但Handler是如何实现线程间通信的呢?本文将从源码中分析Handler的消息通信机制。

0x00 Handler使用

首先看看我们平时是如何使用的Handler的。先看看以下代码

//定义HandlerHandler mHandler = new Handler(){  public void handleMessage(Message msg){    switch(msg.what){      case UPDATE_UI:
        updateUI(msg);        break;
    }
  }
};class MyThread extends Thread{  public void run(){    //do same work!
    ...    //send message
    Message msg = mHandler.obtainMessage(UPDATE_UI);
    mHandler.sendMessage(msg);
  }
}private void updateUI(Message msg){