先給大家上個(gè)圖,自己畫(huà)的不對(duì)請(qǐng)指正。
Handler.png
有一天Handler 外出旅行 買(mǎi)了許多違禁品不讓帶回去(Message),只好寫(xiě)了一份清單(MessageQueue)給 Looper管家 管家按照清單依次發(fā)送回家給Hander接收。
一個(gè)Thread 可以有多個(gè)Handler ,每個(gè)handler只能對(duì)應(yīng)一個(gè)Looper。
Android 中的 Handler 在應(yīng)用的生命周期中扮演著不可缺少的角色。它是構(gòu)成半同步/半異步模式架構(gòu)的基礎(chǔ)。許多內(nèi)部和外部的代碼都依賴(lài) Handler 去異步地分發(fā)事件,它能以最小的代價(jià)去維持線(xiàn)程安全。
更深入地理解組件的工作方式能夠幫助解決疑難雜癥。這也能讓我們以最佳的方法使用組件的 API。我們通常將 Handler 作為工作線(xiàn)程和UI線(xiàn)程間的通信機(jī)制,但 Handler 并不僅限于此。它出現(xiàn)在 IntentService[6], 和 Camera2[7] 和許多其它的 API 中。在這些 API 調(diào)用中,Handler 更多情形下是被用作任意線(xiàn)程間的通信工具。
在深入理解了 Handler 的原理后,我們能運(yùn)用其構(gòu)建更有效率、更簡(jiǎn)潔、更健壯的應(yīng)用程序。