請解釋下在單線程模型中Message、Handler、MessageQueue、Looper之間的關(guān)系

2018-07-04 13:57 更新
  • Message: 是 Handler 接收和處理的消息對象
  • Looper: 每個線程只能有一個 Looper. 它的 loop 方法負責(zé)讀取 MessageQueue 中的消息, 讀到消息之后就把消息交給發(fā)送該消息的 Handler 進行處理.
  • MessageQueue: 消息隊列. 它采用先進先出的方式來管理 Message. 程序創(chuàng)建 Looper 對象時, 會在它的構(gòu)造器中創(chuàng)建 MessageQueue 對象.
  • Handler: 在新啟動的線程中發(fā)送消息, 在主線程中獲取處理消息.

當(dāng)新啟動的線程發(fā)送消息時, 消息會發(fā)送到與之關(guān)聯(lián)的 MessageQueue, 而 Handler 會不斷地從 MessageQueue 中獲取并處理消息. 這將導(dǎo)致 Handler 類中處理消息的方法被回調(diào). 這個方法處于主線程, 從而更新 UI.


以上內(nèi)容是否對您有幫助:
在線筆記
App下載
App下載

掃描二維碼

下載編程獅App

公眾號
微信公眾號

編程獅公眾號