Handler的底層原理實現

Handler:用來發送消息,處理消息 
Message:消息實體對象,handler通過sendMsg將實體放到消息隊列裏面 
MessageQueue:存放消息的隊列 
Looper:消息輪詢器,輪詢消息隊列的消息然後取出,交給handler處理


關於Handler的幾個問題

1.Handler可以new 多個嗎?

Handler可以有多個

2.Looper可以有多個嗎?

Looper可以有多個,但是一個線程只有一個Looper

3.MessageQueue可以有多個嗎?

一個線程只能有一個

Handler通信

1.子線程與主線程通信

1.在子線程中調用send..,post… 
2.在主線程中創建Looper(Looper.prepare),MessageQueue(Application給我們準備好了,不需手動創建) 
3.Handler,Looper,MessageQueue必須在一個線程 
4.主線程收到調用結果

2.主線程與子線程通信

1.在主線程中調用send..,post… 
2.在子線程中手動創建Looper(Looper.prepare),MessageQueue 
3.Handler,Looper,MessageQueue必須在一個線程 
4.子線程收到調用結果

3.子線程A與子線B程通信

A與B通信,A控制B

發佈了43 篇原創文章 · 獲贊 8 · 訪問量 1萬+
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章