Android中Handler的機制

1.相關概念

1.Handler:能夠看作是一個工具類,用來向消息隊列中插入消息的; 工具

2.Thread:全部與Handler相關的功能都是與Thread密不可分的,Handler會與建立時所在的線程綁定; oop

3.Message:消息; spa

4.MessageQueue:消息隊列,對消息進行管理,實現了一個Message鏈表; 線程

5.Looper:消息循環,從MessageQueue中取出Message進行處理; 對象

6.HandlerThread:繼承Thread,實例化時自動建立Looper對象,實現一個消息循環線程. 繼承


2.線程中消息處理的流程圖

消息插入隊列的位置由參數uptimeMillis來肯定。 隊列


3.Handler與線程的關係

1.HandlerThread就是一個封裝了Looper的Thread. 消息隊列

2.Handler會與實例化時所在的線程綁定. 循環

4.UI線程與子線程通訊相關

1.須要更新UI,則須要使用與主線程綁定的Handler發送消息,若使用在子線程中建立的Handler則會拋出異常; 方法

2.子線程中實例化Handler對象首先須要調用Looper.prepare(),不然會拋出異常;

3.調用Looper.loop()方法消息循環纔會啓動;

5.存在的問題

在onCreate(),onStart(),onResume()中經過子線程來修改UI不會拋出異常 。

相關文章
相關標籤/搜索