每個thread只有乙個looper,每個looper只對應乙個messagequeue,每個messagequeue可以有n個message,每個message可以指定乙個handler來處理事件。
handler:
1.處理message。 looper從messagequeue中取出乙個message後,首先會呼叫handler.dispatchmessage進行訊息派發,後者根據具體的策略來將message分發給相應的責任人。預設情況下handler的派發流程是:先檢查message.callback是否為空,在不為空的情況下,優先message的callback來處理。然後在檢測handler.mcallback是否為空,在不為空的條件下呼叫mcallback.handlemessage。如果前兩個都不存在,則呼叫handler.handlemessage.
2.將某個message壓入messagequeue。 handler有post和send兩個系列函式將message壓入messagequeue。send系列引數直接是message,post則將其他型別的資訊轉成message在用send來執行下一步。
messagequeue:
新建佇列
元素入列
元素出列
元素刪除
銷毀佇列
looper:
looper.prepare() //準備工作
new handler()//建立handler
looper.loop()//迴圈
static final threadlocalsthreadlocal = new threadlocal();
public handler(){
mlooper = looper.mylooper();
mqueue = mlooper.mqueue;
android核心讀書筆記
implementing a binder or,if you want to perform ipc,but do notneed to handle multithreading,implement your inte ce using a messenger regardless,be sur...
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 從...