handler就是消息處理器;併發
Handler、Looper和MessageQueue(消息隊列)三者實現了安卓中最重要的消息傳遞、處理機制。oop
Handler:負責將消息對象加入到消息隊列(Message Queue)中;code
Message Queue:藍色矩形爲消息隊列。特色爲先進先出,數據從尾部加入,從頭部出來。對象
Looper:負責不停地從隊列中往外取出消息對象;沒有消息對象時處於等待狀態。取出消息對象後,將會交給Handler處理。繼承
例子具體實現這樣一個功能:隊列
點擊按鈕,標記消息對象,併發送到消息隊列中。 以後當hanlder接收到這個消息對象時,將消息對象的標記(what字段)打印出來。圖片
class ButtonListener implements OnClickListener { public void onClick(View v) { Message msg = handler.obtainMessage();//建立消息 msg.what = 2;//消息標記what,是一個整型字段 handler.sendMessage(msg); } }
接着系統會進行如下操做:消息隊列
1 消息對象被髮送到消息隊列中it
2 Looper從消息隊列中取出消息對象class
3 Looper找到與消息對象對應的hanlder對象
4 Looper將消息對象交給handler對象處理
5 handler對象調用handlerMessage(Message msg)方法,來處理消息對象
那麼咱們須要建立一個繼承Handler的類,並重寫這個方法。
class MyHandler extends Handler { public void handleMessage(Message msg) { super.handleMessage(msg); } }
public void handleMessage(Message msg) { super.handleMessage(msg); int what = msg.what; System.out.println("what: " + what); }
(handler 爲 成員變量)
private Handler handler;
handler = MyHandler();
完成以後,咱們點擊按鈕,就能打印出消息標記了: