大家應該都知道,在android中子執行緒是無法進行ui操作的,如果想要使得主線程能夠操作ui元素,我們應該怎麼做呢?針對於這個我簡單的講解一下android中訊息佇列機制。
訊息佇列機制(如上圖所示)
*主線程建立時,系統會同時建立訊息佇列物件(messagequeue)和訊息輪詢器物件(looper)
* 輪詢器的作用,就是不停的檢測訊息佇列中是否有訊息(message)
* 訊息佇列一旦有訊息,輪詢器會把訊息物件傳給訊息處理器(handler),處理器會呼叫handlemessage方法來處理這條訊息,handlemessage方法執行在主線程中,所以可以重新整理ui
* 總結:只要訊息佇列有訊息,handlemessage方法就會呼叫
* 子執行緒如果需要重新整理ui,只需要往訊息佇列中發一條訊息,觸發handlemessage方法即可
* 子執行緒使用處理器物件的sendmessage方法傳送訊息
希望以上的講解,能幫到大家!
Android訊息機制
looper執行緒 主人 的 message queue 郵箱 唯一的管理人員 handler快遞小哥 跟管理人員looper溝通,送 push 新郵件 訊息 讓管理人員looper代簽扔進郵箱 message queue,也接收管理人員從郵箱拿出來的件。message queue 訊息佇列 主人的...
android 訊息機制
color green 一 角色描述 1.looper 乙個執行緒可以產生乙個looper物件,由它來管理此執行緒裡的message queue 訊息佇列 2.handler 你可以構造handler物件來與looper溝通,以便push新訊息到message queue裡 或者接收looper 從...
Android訊息機制
參考文章 答案在於 threadlocal。看 一下子就可以知道了 一開始就構造了乙個looper,我們看looper.mylooper 做了什麼。可以 看到就是呼叫了一下sthreadlocal.get 看一下sthreadlocal的定義 這裡說,如果不呼叫prepare 方法就會返回空,我們去...