Handler訊息處理機制

2021-08-01 22:42:35 字數 781 閱讀 6383

剛開始接觸android,邊學習邊做筆記,希望大家多指正。

經常在**中看到sendmessage()族的一些函式,開始時總搞不明白訊息傳送到**去了,誰去處理,什麼時候處理。下面是問題解答。

至於開始的幾個疑問,我是這樣理解的。訊息傳送出去,就相當於馬上要被處理了。就像進地鐵一樣,已經站到了進站的佇列中(假設每個地鐵站僅乙個地鐵口和進站佇列),地鐵口的工作人員一直處於工作狀態,類似於這裡的looper,不同的地鐵站類似於不同的handler物件,它們均有自己的工作人員looper和進站佇列messagequeue。

handler myhandler=new handler()

}}private void sendmessagedemo()

}).start();

}private void postdemo()

});}

}).start();

}

向訊息佇列中傳送訊息的方法有:

sendemptymessage(int)//傳送訊息

sendmessage(msg)

sendmessageattime(msg,long)

sendmessagedelayed(msg,long)

post(runnable)//提交計畫任務

postattime(runnable,long)

postdelayed(runnable,long)

其中,sendmessage族和post族區別僅在於編碼實現的方式不同,而原理的本質是一樣的。

handler訊息處理機制

handler主要用來更新ui 因為涉及到執行緒安全,android必須在ui執行緒 即主線程 裡才能更新ui,在其他執行緒裡更新ui會報錯,而一些耗時的操作又必須通過開啟新的執行緒來執行,這就要用到handler來傳遞訊息了。在主線程中建立乙個handler的例項,並重寫handlermessag...

非同步訊息處理機制 Handler

handler面試詳解 一 什麼是handler handler通過傳送和處理 message 和runnable 物件來關聯對應執行緒的 messagequeue.1.可以讓對應的message和 runnable 在未來的某個時間點進行相應處理 2.讓自己想要處理的耗時操作放在子執行緒,讓更新 ...

Handler處理機制

handler缺點 如果要運送兩種型別的資料 比如乙個bitmap,乙個object 就不能運送,但可以用bunder來傳輸 使用handler的步驟 1 建立乙個handler 2 在需要用到資料傳輸的地方通過handler得到message物件,通過message攜帶要傳輸的資料 3 直接通過h...