Android系統中的視圖組件並非線程安全的,若是要更新視圖,必須在主線程中更新,不能夠在子線程中執行更新的操做。 Android系統中的Looper負責管理線程的消息隊列和消息循環。經過Looper.myLooper()獲得當前線程的Looper對象,經過Looper.getMainLooper()獲得當前進程的主線程的Looper對象。 Android的消息隊列和消息循環都是針對具體線程的,一個線程能夠存在一個消息隊列和消息循環,特定線程的消息只能分發給本線程,不能跨線程和跨進程通信。 Handler的做用是把消息加入特定的Looper所管理的消息隊列中,並分發和處理該消息隊列中的消息。構造Handler的時候能夠指定一個Looper對象,若是不指定則利用當前線程的Looper對象建立。安全
Handler對象管理的Looper對象是線程安全的,無論是添加消息到消息隊列仍是從消息隊列中讀取消息都是同步保護的,因此不會出現數據不一致現象。oop