源碼分析Android Handler是如何實(shí)現(xiàn)線程間通信的

Handler作為Android消息通信的基礎(chǔ),它的使用是每一個(gè)開發(fā)者都必須掌握的。開發(fā)者從一開始就被告知必須在主線程中進(jìn)行UI操作。但Handler是如何實(shí)現(xiàn)線程間通信的呢?本文將從源碼中分析Handler的消息通信機(jī)制。

0x00 Handler使用

首先看看我們平時(shí)是如何使用的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){