android訊息佇列機制(Handler)

2021-07-09 09:05:19 字數 552 閱讀 8820

大家應該都知道,在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 方法就會返回空,我們去...