1. 什麼是消息機制
Handler是Android消息機制的上層接口,常用於將一個任務切換到所在線程執行(更新UI),Handler的運行機制就是Android的消息機制。
2. Handler附帶
1. Message
消息。
2. MessageQueue
消息隊列。
以單鏈表的形式存儲消息。
3. Looper
無限循環的去查找是否有新消息,有就去處理,否則一直等待。
如何爲線程創建Looper。
Looper.prepare();//創建
Handler h = new Hanlder();
Looper.loop();//開啓消息循環
4. ThreadLocal
ThreadLocal 是一種可以在不同線程中互不干擾的存儲並提供數據的線程內部數據存儲類,Handler會採用當前線程的Looper來構造消息循環。使用ThreadLocal 可以獲取Looper,線程默認沒有Looper,需要自己創建。
3. Handler的工作原理
Handler創建完畢之後 使用Handler的方法發送消息,
send方法,post方法(最終也是通過send),
然後MessageQueue 的 enqueueMessage方法將這個消息放入消息隊列,
Looper發現有新消息, 就會去處理,最終交給Handler的dispatchMessage() handleMessage方法就會被調用。