Handler:異步消息處理。
Handler的定義:安全
主要接受子線程發送的數據, 並用此數據配合主線程更新UI.
解釋: 當應用程序啓動時,Android首先會開啓一個主線程 (也就是UI線程) , 主線程爲管理界面中的UI控件,進行事件分發, 好比說, 你要是點擊一個 Button ,Android會分發事件到Button上,來響應你的操做。 若是此時須要一個耗時的操做,例如: 聯網讀取數據, 或者讀取本地較大的一個文件的時候,你不能把這些操做放在主線程中,,若是你放在主線程中的話,界面會出現假死現象, 若是5秒鐘尚未完成的話,,會收到Android系統的一個錯誤提示 "強制關閉". 這個時候咱們須要把這些耗時的操做,放在一個子線程中,由於子線程涉及到UI更新,,Android主線程是線程不安全的,也就是說,更新UI只能在主線程中更新,子線程中操做是危險的. 這個時候,Handler就出現了.,來解決這個複雜的問題 , 因爲Handler運行在主線程中(UI線程中), 它與子線程能夠經過Message對象來傳遞數據, 這個時候,Handler就承擔着接受子線程傳過來的(子線程用sedMessage()方法傳弟)Message對象,(裏面包含數據) , 把這些消息放入主線程隊列中,配合主線程進行更新UI。異步
基本概念:post
基本的使用方法:線程
使用Handler更新ProgressBar(進度條):
———————————————————————————————————對象
Handler與Runnable的關係:都是在原線程上執行的,在用//updateBarHandler.post(runable);的時候並無調用線程的stat()方法,而是直接執行了run()方法,因此都是用同一線程。隊列
Bundle的用法:事件
在新線程中處理消息的方法:sed