這篇文章主要講解了“Android中Handler有什么作用”,文中的講解內容簡單清晰,易于學習與理解,下面請大家跟著小編的思路慢慢深入,一起來研究和學習“Android中Handler有什么作用”吧!
城陽ssl適用于網站、小程序/APP、API接口等需要進行數據傳輸應用場景,ssl證書未來市場廣闊!成為成都創新互聯的ssl證書銷售渠道,可以享受市場價格4-6折優惠!如果有意向歡迎電話聯系或者加微信:18980820575(備注:SSL證書合作)期待與您的合作!
在性能優化方面考慮,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方法
感謝各位的閱讀,以上就是“Android中Handler有什么作用”的內容了,經過本文的學習后,相信大家對Android中Handler有什么作用這一問題有了更深刻的體會,具體使用情況還需要大家實踐驗證。這里是創新互聯,小編將為大家推送更多相關知識點的文章,歡迎關注!
新聞標題:Android中Handler有什么作用
本文路徑:http://vcdvsql.cn/article36/gjegpg.html
成都網站建設公司_創新互聯,為您提供企業建站、搜索引擎優化、定制網站、外貿網站建設、自適應網站、虛擬主機
聲明:本網站發布的內容(圖片、視頻和文字)以用戶投稿、用戶轉載內容為主,如果涉及侵權請盡快告知,我們將會在第一時間刪除。文章觀點不代表本網站立場,如需處理請聯系客服。電話:028-86922220;郵箱:631063699@qq.com。內容未經允許不得轉載,或轉載時需注明來源: 創新互聯