執行緒間通訊之Handler

2021-07-07 01:45:27 字數 443 閱讀 2763

使用handler在主線程和子執行緒之間傳遞訊息的機制,就是通過handler獲取主線程的訊息佇列,將子執行緒的訊息傳送到主線程的訊息佇列,由looper取出後交給目標handler處理。

looper

首先主線程會初始化時呼叫looper.prepare()建立主線程的looper,建立的looper物件持有乙個訊息佇列引用messagequeue,looper無限輪詢訊息佇列messagequeue中的訊息,並且將訊息分發給各個目標handler處理。這裡需要注意的是,looper是在主線程中預設建立,所以如果在子執行緒中建立handler就獲取不到looper引用,需要手動prepare建立。

handler

建立handler時會獲取當前執行緒的乙個looper,looper在這個執行緒裡輪詢它的訊息佇列,handler中的handlemessage方法是looper來呼叫的。

message

handler實現執行緒間通訊的原理 looper

涉及到的幾個概念 message 訊息的乙個封裝類,它的物件由訊息佇列messagequeue統一列隊,終由handler處理。handler 訊息處理類,負責message的傳送及處理。使用handler時,需要實現handlemessage message msg 方法來對特定的message進...

handler程序間通訊機制

handler在哪個activity或者service執行緒建立,那麼looper就和哪乙個執行緒進行了繫結。如果是自己建立的執行緒那麼就要使用looper中的prepare函式來繫結了。在handler建立後就例項化了乙個looper並關聯了乙個訊息佇列mq。在其他的傳送訊息的執行緒中 接受執行緒...

Android中Handler詳解,執行緒間通訊機制

已經很長時間沒有寫過部落格了,最近看了一些大牛們寫的文章,都說寫部落格是乙個很好的習慣,可以把零散的知識記錄下來,這樣以後如果要遇到,就可以很快的把丟失的知識找回來,達到事半功倍效果。我前段時間剛剛找到我人生中的第乙份工作,於是就想著把面試中經常會被問到的問題來記錄一下。希望大家喜歡 hanlder...