基本原理多線程
線程中調用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並非很關心!隊列