hander消息機制原理(looper輪詢監聽機制)

基本原理多線程

線程中調用Handler.sendMsg()方法(參數是Message對象),將須要Main線程處理的事件 添加到Main線程的MessageQueue中,Main線程經過MainLooper從消息隊列中取出Handler發過來的這個消息時,會回調 Handler的handlerMessage()方法。oop

 

 

注意:(UI主要線程中才有Looper)
建立一個Handler時必定要關聯一個Looper實例,默認構造方法Handler(),它是關聯當前Thread的Looper
在建立一個Handler的時候也能夠指定Looper,此時的Looper對象,能夠是當前線程的也能夠是其它線程的!ui

多線程中使用,容易形成內存泄漏;也能夠用RunOnuiThread()來替代。線程

 

 

 

ps:MessageQueue是消息隊列,先進先出,它的做用是保存有待線程處理的消息。對象

Handler只是處理它所關聯的Looper中的MessageQueue中的Message,至於它哪一個線程的Looper,Handler並非很關心!隊列

相關文章
相關標籤/搜索