Handler消息處理機制

說到Handler就會被問到Handler、Message、Looper之間的關(guān)系了。那么Handler為什么要出現(xiàn)呢,它的作用是什么?

1.Handler的作用

Android是單線程模型的操作系統(tǒng)。為了避免多線程更新UI出現(xiàn)混亂,出現(xiàn)線程不安全,在Android中只能使用主線程(UI線程)更新UI,那么子線程和UI線程之間的通信怎么通信呢?Handler就是為了解決這個問題的。

2.Handler、Message、Looper之間的關(guān)系

Handler:消息處理者負責發(fā)送消息和消息內(nèi)容的處理。sendMessage和handleMessage方法</br>
Message:消息對象,信息的攜帶者。</br>
Looper:它是消息的載體,Looper.loop()是一個死循環(huán),會不斷的從消息隊列中取出消息。如果有消息就會處理,否則會阻塞。</br>
MessageQueue:用來存放Handler發(fā)送的消息的消息隊列(雙向鏈表結(jié)構(gòu))。</br>

從源碼的角度來說,我們通過Handler發(fā)送Message到MessageQueue,MessageQueue調(diào)用enqueueMessage方法向消息隊列中插入一條消息。Looper會不停的輪詢Message,它是一個阻塞式死循環(huán),當發(fā)現(xiàn)有消息的時候,會調(diào)用dispatchMessage方法分發(fā)給Handler,Handler通過handlerMessage進行處理這些消息。

源碼就不分析了可以參考郭霖大神鴻洋大神的博客

?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
【社區(qū)內(nèi)容提示】社區(qū)部分內(nèi)容疑似由AI輔助生成,瀏覽時請結(jié)合常識與多方信息審慎甄別。
平臺聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點,簡書系信息發(fā)布平臺,僅提供信息存儲服務(wù)。

相關(guān)閱讀更多精彩內(nèi)容

友情鏈接更多精彩內(nèi)容