handler消息處理機(jī)制的用法-創(chuàng)新互聯(lián)

class LooperThread extends Thread {

成都創(chuàng)新互聯(lián)公司長(zhǎng)期為1000+客戶提供的網(wǎng)站建設(shè)服務(wù),團(tuán)隊(duì)從業(yè)經(jīng)驗(yàn)10年,關(guān)注不同地域、不同群體,并針對(duì)不同對(duì)象提供差異化的產(chǎn)品和服務(wù);打造開(kāi)放共贏平臺(tái),與合作伙伴共同營(yíng)造健康的互聯(lián)網(wǎng)生態(tài)環(huán)境。為金山企業(yè)提供專業(yè)的網(wǎng)站建設(shè)、網(wǎng)站設(shè)計(jì),金山網(wǎng)站改版等技術(shù)服務(wù)。擁有10余年豐富建站經(jīng)驗(yàn)和眾多成功案例,為您定制開(kāi)發(fā)。

  public Handler mHandler;

  public void run() {

new Handler() {

      public void handleMessage(Message msg) {

        // process incoming messages here

Post:Post允許把一個(gè)Runnable對(duì)象入隊(duì)到消息隊(duì)列中。它的方法有:post(Runnable)、    postAtTime(Runnable,long)、postDelayed(Runnable,long)。

sendMessage:sendMessage允許把一個(gè)包含消息數(shù)據(jù)的Message對(duì)象壓入到消息隊(duì)列中。它的方法有:sendEmptyMessage(int)、sendMessage(Message)、sendMessageAtTime(Message,long)、sendMessageDelayed(Message,long)。

Message:Message是一個(gè)final類(lèi),所以不可被繼承。使用Message.obtain()這個(gè)靜態(tài)的方法或者Handler.obtainMessage()獲取。Message.obtain()方法具有多個(gè)重載方法,大致可以分為為兩類(lèi),一類(lèi)是無(wú)需傳遞Handler對(duì)象,對(duì)于這類(lèi)的方法,當(dāng)填充好消息后,需要調(diào)用Handler.sendMessage()方法來(lái)發(fā)送消息到消息隊(duì)列中。第二類(lèi)需要傳遞一個(gè)Handler對(duì)象,這類(lèi)方法可以直接使用Message.sendToTarget()方法發(fā)送消息到消息隊(duì)列中,這是因?yàn)樵贛essage對(duì)象中有一個(gè)私有的Handler類(lèi)型的屬性Target,當(dāng)時(shí)obtain方法傳遞進(jìn)一個(gè)Handler對(duì)象的時(shí)候,會(huì)給Target屬性賦值,當(dāng)調(diào)用sendToTarget()方法的時(shí)候,實(shí)際在它內(nèi)部還是調(diào)用的Target.sendMessage()方法。

總結(jié):一個(gè)Looper對(duì)應(yīng)一個(gè)MessageQueue,一個(gè)線程對(duì)應(yīng)一個(gè)Looper,一個(gè)線程可以有多個(gè)looper。

Handler handler = new Handler(){...}創(chuàng)建Handler。這樣創(chuàng)建的handler是在主線程即UI線程下的Handler,即這個(gè)Handler是與UI線程下的默認(rèn)Looper綁定的。HandlerThread實(shí)際上就一個(gè)Thread,只不過(guò)它比普通的Thread多了一個(gè)Looper。創(chuàng)建HandlerThread時(shí)要把它啟動(dòng)了,即調(diào)用start()方法。然后創(chuàng)建Handler時(shí)將HandlerThread中的looper對(duì)象傳入。


HandlerThread thread = new HandlerThread("MyHandlerThread");
thread.start();
mHandler = new Handler(thread.getLooper());
mHandler.post(new Runnable(){...});
那么這個(gè)Handler對(duì)象就是與HandlerThread這個(gè)線程綁定了(這時(shí)就不再是與UI線程綁定了,這樣它處理耗時(shí)操作將不會(huì)阻塞UI)。

上文描述的就是handler消息處理機(jī)制的用法,具體使用情況還需要大家自己動(dòng)手實(shí)驗(yàn)使用過(guò)才能領(lǐng)會(huì)。如果想了解更多相關(guān)內(nèi)容,歡迎關(guān)注創(chuàng)新互聯(lián)行業(yè)資訊頻道!

另外有需要云服務(wù)器可以了解下創(chuàng)新互聯(lián)scvps.cn,海內(nèi)外云服務(wù)器15元起步,三天無(wú)理由+7*72小時(shí)售后在線,公司持有idc許可證,提供“云服務(wù)器、裸金屬服務(wù)器、高防服務(wù)器、香港服務(wù)器、美國(guó)服務(wù)器、虛擬主機(jī)、免備案服務(wù)器”等云主機(jī)租用服務(wù)以及企業(yè)上云的綜合解決方案,具有“安全穩(wěn)定、簡(jiǎn)單易用、服務(wù)可用性高、性價(jià)比高”等特點(diǎn)與優(yōu)勢(shì),專為企業(yè)上云打造定制,能夠滿足用戶豐富、多元化的應(yīng)用場(chǎng)景需求。

網(wǎng)站名稱:handler消息處理機(jī)制的用法-創(chuàng)新互聯(lián)
網(wǎng)頁(yè)地址:http://bm7419.com/article8/cecpip.html

成都網(wǎng)站建設(shè)公司_創(chuàng)新互聯(lián),為您提供App設(shè)計(jì)、小程序開(kāi)發(fā)、企業(yè)建站、虛擬主機(jī)、自適應(yīng)網(wǎng)站、網(wǎng)站建設(shè)

廣告

聲明:本網(wǎng)站發(fā)布的內(nèi)容(圖片、視頻和文字)以用戶投稿、用戶轉(zhuǎn)載內(nèi)容為主,如果涉及侵權(quán)請(qǐng)盡快告知,我們將會(huì)在第一時(shí)間刪除。文章觀點(diǎn)不代表本網(wǎng)站立場(chǎng),如需處理請(qǐng)聯(lián)系客服。電話:028-86922220;郵箱:631063699@qq.com。內(nèi)容未經(jīng)允許不得轉(zhuǎn)載,或轉(zhuǎn)載時(shí)需注明來(lái)源: 創(chuàng)新互聯(lián)

成都做網(wǎng)站