天天看點

Handler的異步消息機制

Handler異步通信機制(包含Looper、 MessageQueue)

https://www.jianshu.com/p/9fe944ee02f7

1.作用

Handler的消息傳遞機制用來實作子線程對UI線程中UI的更新。

2.相關概念

2.1Looper

輪循器,扮演MessageQueue和Handler之前橋梁的作用。

主要負責建立MessageQueue;與目前線程綁定;消息循環:循環取出MessageQueue中的Message;消息派發:将取出的Message傳遞給相應的Handler。

(1)一個線程中隻能有一個Looper,但是一個Looper可以和多個線程的Handler綁定起來,也就是說多個線程對應的Handler可以往一個Looper所持有的MessageQueue中發送消息。這就為線程之間的通信提供了可能。

(2)Handler在建立的時候可以顯示指定Looper,這樣在Handler在調用sendMessage()投遞消息的時候會将消息添加到指定Looper裡面的MessageQueue。如果不指定Looper,Handler預設綁定的是建立它的線程的Looper。

3.異步消息傳遞機制

異步消息傳遞機制的步驟包括異步通信的準備、消息發送、消息循環和消息處理。

(1)異步通信的準備包括Looper、MessageQueue和Handler的執行個體化。

(2)消息發送

(3)消息循環

Looper執行Loop()方法進入消息循環,在這個循環工程中不斷地從MessageQueue中取出消息,然後分發到指定的Handler。

(4)消息處理

4.Handler

Handler向MessageQueue發送消息分為send和post兩種方式。

繼續閱讀