Android Handler、MessageQueue、Looper消息循環(huán)原理分析

Handler概述

Handler的作用是線程間通信,在不同線程中間傳遞消息。

消息循環(huán)主題結(jié)構(gòu)圖例分析

Paste_Image.png

從圖中可以看出,四種顏色分別代表了四個(gè)對(duì)象,并且大致描述了幾個(gè)對(duì)象之間的關(guān)系,以及消息的流轉(zhuǎn)過程,首先Handler通過sendMessage將消息投遞給MessageQueue,Looper通過消息循環(huán)(loop)不斷的從MessageQueue中取出消息,然后消息被Handler的dispatchMessage分發(fā)到handleMessage方法消費(fèi)掉。

Handler

通過Handler的sendMessage等方法來投遞消息到MessageQueue,通過handleMessage來消費(fèi)Message。Handler必須要有一個(gè)已經(jīng)prepare好的Looper對(duì)象,也就是說必須調(diào)用了prepare方法(也包括prepareMainLooper方法),究其根本是初始化一個(gè)消息隊(duì)列,這一過程將在下文中詳細(xì)分析。

Looper

Looper負(fù)責(zé)從MessageQueue中取出消息,然后通過執(zhí)行message.target.dispatchMessage()消費(fèi)掉這個(gè)消息,這里的target就是Handler。

MessageQueue

消息隊(duì)列,管理Handler投遞過來的消息。

Message

用來承載數(shù)據(jù)的消息,最終被Handler消費(fèi)掉。

UML類圖分析

Paste_Image.png
最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者
平臺(tái)聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點(diǎn),簡書系信息發(fā)布平臺(tái),僅提供信息存儲(chǔ)服務(wù)。

推薦閱讀更多精彩內(nèi)容