Handler訊息傳遞機制

2021-07-05 09:01:11 字數 973 閱讀 6245

使用方法 

1.若在ui主線程中,則系統已經初始化了乙個looper物件(因為主線程也是乙個訊息迴圈,因此具有乙個looper,主線程的所有工作都是由其looper完成的looper不斷從訊息佇列中抓取訊息,然後完成訊息指定的任務),否則要自己建立乙個looper物件並啟動。我們無法通過構造器建立looper,而要呼叫looper的

prepare()方法,此方法保證每個執行緒都只有乙個looper物件。

looper的構造器會建立與之配套的messagequeue。

2.  建立handler子類例項,重寫handlemessage()方法。

3. 呼叫looper的靜態方法loop()來啟動它

----------------------繼承handlerthread類------------------------

newthread.start()

newthread.getlooper()

newthread.quit();

當然還是要重寫傳送和處理訊息的方法。

我的理解:

訊息:message類的乙個例項,需要實現時定義的例項變數:

what:使用者定義的int型訊息**

obj:隨訊息傳送的使用者指定的物件

target:處理訊息的handler 

message的目標是handler類的乙個例項,在建立時會自動與乙個handler相關聯。

handler:不僅是message的目標,也是建立和發布message的介面(handler類包含傳送、處理訊息的方法。)

looper:每個執行緒只能擁有乙個looper,它的loop方法負責讀取messagequeue中的訊息並交給handler,建立looper物件時會在它的構造器中建立messagequeue物件 。message必須在looper上發布或讀取,所以handler總是引用著他,乙個handler僅與乙個looper相關聯,乙個looper可與多個handler相關聯。

Handler訊息傳遞機制

android中ui並不是執行緒安全的,什麼是執行緒安全呢 這是維基給出的解釋。如果有多個執行緒操作ui,會造成執行緒不安全問題。因此android有規定 ui元件只能在activity中對ui進行操作。當乙個程式第一次啟動時,android會同時啟動乙個main thread 主線程 主要負責與u...

訊息傳遞機制之Handler機制

在專案中,都會遇見執行緒之間通訊,元件之間通訊.在應用程式中,往往會有一些比較耗時的操作 為了防止阻塞主線程 會將耗時的操作放到子執行緒中執行 處理完成後再去更新ui 但是android不允許子執行緒操作ui 違背了android單執行緒模型的原則 即ui操作不是執行緒安全的而且這些操作必須放在ui...

Handler訊息機制

android的訊息機制主要是指handler的執行機制,也就是handler message messagequeue looper threadlocal之間的工作過程。handler 主要用於傳送和處理訊息。messagequeue 訊息佇列,主要用於存放所有通過handler傳送的messa...