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

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


咨詢
建站咨詢
