新聞中心
面試:Handler的工作原理是怎樣的?
Handler機制工作原理:

創(chuàng)新互聯(lián)從2013年創(chuàng)立,公司以成都網(wǎng)站設(shè)計、網(wǎng)站制作、系統(tǒng)開發(fā)、網(wǎng)絡(luò)推廣、文化傳媒、企業(yè)宣傳、平面廣告設(shè)計等為主要業(yè)務(wù),適用行業(yè)近百種。服務(wù)企業(yè)客戶近1000家,涉及國內(nèi)多個省份客戶。擁有多年網(wǎng)站建設(shè)開發(fā)經(jīng)驗。為企業(yè)提供專業(yè)的網(wǎng)站建設(shè)、創(chuàng)意設(shè)計、宣傳推廣等服務(wù)。 通過專業(yè)的設(shè)計、獨特的風(fēng)格,為不同客戶提供各種風(fēng)格的特色服務(wù)。
Handler 工作流程基本包括 Handler、Looper、Message、MessageQueue 四個部分。但我們在日常開發(fā)中,經(jīng)常都只會用到 Handler 和 Message 兩個類。Message 負(fù)責(zé)消息的搭載,里面有個 target 用于標(biāo)記消息,obj 用于存放內(nèi)容,Handler 負(fù)責(zé)消息的分發(fā)和處理。
下面具體給你講解一下:
Handler機制是由Looper和MessageQueue來構(gòu)建消息機制的。
MessageQueue:消息隊列。雖然名為隊列,但事實上它的內(nèi)部存儲結(jié)構(gòu)并不是真正的隊列,而是采用單鏈表的數(shù)據(jù)結(jié)構(gòu)來存儲消息列表的,其中主要有插入enqueue()和從中拿走并刪除next()兩個方法。
Looper:消息循環(huán)。MessageQueue來存儲消息,Looper則是以無限循環(huán)的方式去查找是否有新消息,如有就去處理,若沒有就standby(等待)。一個線程創(chuàng)建Handler時首先需要創(chuàng)建Looper的,不然報錯:RuntimeException: No Looper; Looper.prepare() wasn't called on this thread,而且每個線程下只需要創(chuàng)建一個Looper,不然會報錯:RuntimeException: Only one Looper may be created per thread。
面試中回答,建議能自己總結(jié)一套自己的專屬答案,并理解透,那樣當(dāng)遇到這個問題,就能回答的游刃有余!
到此,以上就是小編對于如何理解人才是第一資源的問題就介紹到這了,希望這1點解答對大家有用。
本文題目:如何理解Looper.prepare
路徑分享:http://m.fisionsoft.com.cn/article/cdeogoh.html


咨詢
建站咨詢
