close
要搞清楚Android Multithread,還是等花心思搞清楚 上面提到幾個名詞
首先Thread是最外層
所有上面提到的Handler, Looper, Message Queue 包含在裡面
一個Thread 可以擁有多個Handler, 但只會有一個Looper, 一個MessageQueue
Android在後續版本規定所有Handler建議Base on Thread中的 Looper
宣告方式如下
handler1 = Handler(Looper.myLooper()!!, Handler.Callback { //Your code here true })
而Message Queue在Thread中扮演的角色說穿了就是個Queue
當有個任務(Message)存進來時, 會經由Hander 去接收 如下
looperThread.handler1?.sendMessage(m1)
looperThread.handler2?.sendMessage(m2)
在一開始我們便知道這些Message應該交由哪個Handler處理,
但同時間只能有一個Hander進行,所以尚未完成的就會丟進Message Queue進行排程
等到目前的Message完成後, Looper就會再找下一個再Queue裡的Message並丟給對應的Handler進行處理
Message是預定要存的任務, 可以put String 等等存值進去給Handler進行判斷
而Runnable 則是要做的行為, 也可以包給Handler進行處理
全站熱搜