android原始碼學習-Handler機制及其六個核心點

aa111111發表於2022-03-16

一、Handler機制介紹

1.1 Handler是什麼?

Handler是安卓中很常用的一種機制,其主要用於執行緒之間的通訊。


1.2 為什麼要了解Handler原理?

之前我在一個群裡面聊天,說面試經常會問到handler,然後就被噴了,說現在都是MVVM,ViewBinding一類的架構,誰還用handler呀。確實,現在安卓上面封裝的框架越來越多,也讓我們使用起來越來越輕鬆,使用Handler的場景也會越來越少。但是使用的少,不代表沒有用。現有的這些框架,甚至可預見的未來框架,都是基於Handler機制的。


打一個比方,我們普通人開車,也許只要會開就行,不必瞭解汽車的原理。但是如果你想成為一個賽車手,那麼對汽車執行的機制和原理,還是要有一定的瞭解的。


最後,瞭解handler原理有哪些好處呢?


1.handler機制很經典,這種我們平常敲程式碼的過程中也可以視場景使用。


2.handler其實除了普通的同步訊息,還有屏障訊息和非同步訊息的,我們也可以視場景去使用。


3.handler還提供了閒時機制IdelHandler。


4.通過handler可以幫助我們排查到底是哪裡的程式碼導致卡頓。


上面的這些點,後面文章中都會有詳細的講解。


1.3 Handler對於面試中的作用?

同時Handler也是面試當中經常會被問到的一種安卓機制。


我總結了一下,大約有六個點會被高頻問到,這六個技術點特意用紅字標註,屬於面試中很容易被問到的技術點。


例如:技術點1


二、Handler原理概述

如下圖所示:安卓中Handler的機制是子執行緒中獲取一個Handler物件,通過這個Handler物件像MessageQueue中傳送任務。主執行緒中開啟一個無限死迴圈,不斷的從MessageQueue中取Message任務,如果取到了就執行Messagez中的任務,如果沒有取到則進入休眠狀態。




 幾個涉及到的重要的物件


Handler:一般要在主執行緒中建立,持有一個主執行緒的Looper,負責向主執行緒進行message分發。


Message:可以理解為task,任務執行的單元。


MessageQueue:裡面是一個單連結串列,單連結串列儲存Message任務。


Looper:負責處理Message任務,其loop方法在主執行緒中開啟無限迴圈。


來自 “ ITPUB部落格 ” ,連結:http://blog.itpub.net/70010128/viewspace-2871309/,如需轉載,請註明出處,否則將追究法律責任。

相關文章