首先還是推薦幾篇部落格:
再來說說我的理解:
訊息處理機制適用場景:
比如:a)***類中要控制ui介面類很多元件的屬性值,可以傳參,可以設定static,但這在有大量元件屬性值需要變化時就行不通了,這時可以運用訊息處理機制在***中通知ui介面類,在介面類中改變屬性值,並重新繪製ui.
b)需要在另外的執行緒中改變介面。
此處注意兩個很好用的規則:1)不要在介面執行緒之外繪製介面。2)不要阻塞介面執行緒,否則會有不好的使用者體驗。
再來解析訊息機制有關的兩個個變數:looper類,handler類
looper類:messagequeue的管理者
looper類用來管理特定「執行緒內」物件之間的訊息交換(message exchange)。你的應用程式可以產生許多個執行緒。而乙個執行緒可以有許多個元件,這些元件之間常常需要互相交換訊息。如果有這種需要,您可以替執行緒構造乙個looper物件,來擔任訊息交換的管理工作。looper物件會建立乙個messagequeue資料結構來存放各物件傳來的訊息(包括ui事件或system事件等)。
handler:
訊息的處理者.handler的作用是把訊息加入特定的(looper)訊息佇列中,並分發和處理該訊息佇列中的訊息。構造handler的時候可以指定乙個looper物件,如果不指定則利用當前執行緒的looper建立.然後handler就可以把訊息傳給該looper物件所在的執行緒,同時handler也可以接受來自looper的訊息。
簡而言之:handler.sendmessage()方法把訊息傳送到looper執行緒所在的essagequeue佇列,然後自動呼叫handler.handmessage()方法響應訊息並做對應的處理。
Android訊息處理機制 二
角色綜述 回顧 1 ui thread 通常就是main thread,而android啟動程式時會替它建立乙個messagequeue。2 當然需要乙個looper物件,來管理該messagequeue。3 我們可以構造handler物件來push新訊息到message queue裡 或者接收lo...
Android訊息處理機制(一)
android 有一種叫訊息佇列的說法,這裡我們可以這樣理解 假如乙個隧道就是乙個訊息佇列,那麼裡面的每一部汽車就是乙個乙個訊息,這裡我們先忽略掉超車等種種因素,只那麼先進隧道的車將會先出,這個機制跟我們android 的訊息機制是一樣的。一 角色描述 1.looper 相當於隧道 乙個執行緒可以產...
android非同步訊息處理機制
我們都知道android的ui更新操作都是在主線程執行的,但是很多時候我們都需要在子執行緒 中執行一些費時的操作,以獲取我們所需要的變更資料。很多剛入門的同學都容易犯的乙個錯誤就是在子執行緒試圖去更新ui控制項,這樣做是被android禁止的,所以會出現崩潰的現象。android的非同步資訊處理機制...