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

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

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


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

掃描二維碼

下載編程獅App

公眾號
微信公眾號

編程獅公眾號