Android中Handler
在效能最佳化方面考慮,Android的UI操作其實並不是執行緒安全的,這意味著如果有多個執行緒併發操作UI元件,就會導致執行緒安全的問題,為了這個問題,Android提供瞭解決方法:指定了一條簡單的規則,只允許UI執行緒修改Activity裡的元件
當第一個程式第一次啟動時,Android會同時啟動一條Main Thread(主執行緒),負責處理和UI相關的時間,比如按鍵時間,接觸螢幕以及螢幕繪製事件,並把相關的時間分發到對應的元件進行處理。因此,主執行緒又被稱為UI執行緒
Android的訊息傳遞機制是裡外一種形式的“事件處理”,這是為了解決Android應用的多執行緒問題:只允許UI執行緒修改Activity裡的U元件,這樣會導致新啟動的執行緒無法動態改變介面元件的屬性值。但是在實際的開發中,尤其是涉及動畫的遊戲開發中,需要讓新啟動的執行緒週期性的改變介面元件的屬性,這就需要Handler的訊息傳遞機制來實現
-
Handler的底層實現原理
要理解handler的實現原理,其實最重要的是Looper的實現原理,Looper才是實現handler機制的核心。
任何一個handler在使用sendMessage或者post時候,都是先構造一個Message,並把自己放到Message中,然後把Message放到對應的Looper的MessageQueue,Looper透過控制MessageQueue來獲取message執行其中的handler或者runnable。
要在當前執行緒中執行handler指定操作,必須要先看當前執行緒中有沒有looper,如果有looper,handler就會透過sendMessage,或者post先構造一個message,然後把message放到當前執行緒的looper中,looper會在當前執行緒中迴圈取出message執行,如果沒有looper,就要透過looper.prepare()方法在當前執行緒中構建一個looper,然後主動執行looper.loop()來實現迴圈。
-
Handler類的兩個作用:在新啟動的執行緒中傳送資訊和在主執行緒中獲取、處理資訊
-
Message:Handler處理和接收的訊息物件
-
Looper:每個執行緒擁有一個Looper,它的loop負責讀取MessageQueue中的訊息,讀到訊息之後,就把訊息交給該訊息的Handler處理
-
MessageQueue:訊息佇列,採用先進先出的方式來管理Message。程式建立Loop時就會在它的構造器中建立MessageQueue物件
-
在主UI執行緒中,系統已經初始化; 一個Loop物件,因此可以直接建立Handler
-
在自己啟動的子執行緒中,必須自己建立一個Looper物件,啟動它,建立物件並呼叫它的prepare方法
來自 “ ITPUB部落格 ” ,連結:http://blog.itpub.net/69917874/viewspace-2689232/,如需轉載,請註明出處,否則將追究法律責任。
相關文章
- Android中Handler的正確使用Android
- Android中handler問題彙總Android
- Android中handler倒數計時Android
- Android Handler原理Android
- Android Handler機制之Handler 、MessageQueue 、LooperAndroidOOP
- Android學習-HandlerAndroid
- Android Handler 原始碼探索Android原始碼
- Android Handler 原始碼解析Android原始碼
- Android 基礎之 HandlerAndroid
- Android訊息機制HandlerAndroid
- Android 8.1 Handler 原始碼解析Android原始碼
- Android學習筆記·HandlerAndroid筆記
- android訊息機制—HandlerAndroid
- Android Handler機制之ThreadLocalAndroidthread
- Android Handler面試總結Android面試
- Android 進階 ———— Handler系列之建立子執行緒HandlerAndroid執行緒
- 移動架構 (二) Android 中 Handler 架構分析,並實現自己簡易版本 Handler 框架架構Android框架
- Android原始碼學習之handlerAndroid原始碼
- Android Handler與Looper原理簡析AndroidOOP
- 2018.03.06 Android Handler學習筆記Android筆記
- Android訊息機制Handler用法Android
- Android的Handler訊息機制 解析Android
- Android 原始碼分析(二)handler 機制Android原始碼
- Android進階知識:Handler相關Android
- Android Handler機制之總目錄Android
- Android Handler 訊息機制詳述Android
- Android Handler 訊息傳送效能優化Android優化
- Android 訊息機制:Handler、MessageQueue 和 LooperAndroidOOP
- Android Handler MessageQueue Looper 訊息機制原理AndroidOOP
- Android點將臺:烽火狼煙[-Handler-]Android
- Android 高階面試-1:Handler 相關Android面試
- Android Handler機制理解和AsyncTask使用小記Android
- android Handler導致的記憶體洩露Android記憶體洩露
- Android進階;Handler訊息機制詳解Android
- Android 之 “只是想來談談 Handler 機制”Android
- Android--Handler機制及原始碼詳解Android原始碼
- Android Handler訊息機制原始碼解讀Android原始碼
- Android Handler機制之記憶體洩漏Android記憶體