使用方法
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...