資源描述:
《Android中消息系統(tǒng)模型和Handler Looper.doc》由會(huì)員上傳分享,免費(fèi)在線閱讀,更多相關(guān)內(nèi)容在教育資源-天天文庫(kù)。
1、高考Android中消息系統(tǒng)模型和HandlerLooper 作為Android中大量使用的Handler,結(jié)合Thread使其具有眾多的使用形式和方法,讓我一時(shí)感覺這個(gè)東西有些玄乎,不明所以然,這到底是一個(gè)什么樣的存在呢?通過(guò)網(wǎng)上資料和源碼的學(xué)習(xí),這個(gè)Handler也差不多弄清楚了,現(xiàn)在總結(jié)下這個(gè)學(xué)習(xí)結(jié)果。一、Handler作用和概念通過(guò)官方文檔了解到Handler的大致概念是:Handler能夠讓你發(fā)送和處理消息,以及Runnable對(duì)象;每個(gè)Handler對(duì)象對(duì)應(yīng)一個(gè)Thread和Thread的消息隊(duì)列。當(dāng)你創(chuàng)建一個(gè)Handler時(shí),它就
2、和Thread的消息隊(duì)列綁定在一起,然后就可以傳遞消息和runnable對(duì)象到消息隊(duì)列中,執(zhí)行消息后就從消息隊(duì)列中退出?! andler的作用就是:調(diào)度消息和runnable對(duì)象去被執(zhí)行;使動(dòng)作在不同的線程中被執(zhí)行?! ‘?dāng)一個(gè)應(yīng)用程序中進(jìn)程被創(chuàng)建時(shí),它的主線程專門運(yùn)行消息隊(duì)列(messageQueue),去管理頂層的應(yīng)用程序相關(guān)的對(duì)象如:activity,broadcastReceiver,windows等,你可以創(chuàng)建你的Thread,和主線程進(jìn)行交互——通過(guò)Handler,交互的方法就是通過(guò)post或者sendMessage。高考但是在你的新
3、線程中,給定的Message或者Runnable,會(huì)在適當(dāng)?shù)臅r(shí)候的被調(diào)度和處理。(即不會(huì)被立即處理——阻塞式)。 這是官方文檔中對(duì)Handler描述的大致意思(英文比較爛翻譯不定正確)。從這些文檔中我們大概了解到handler干了些什么:·運(yùn)行在某個(gè)線程上,共享線程的消息隊(duì)列;·接收消息、調(diào)度消息,派發(fā)消息和處理消息;·實(shí)現(xiàn)消息的異步處理;基本上就是和消息有關(guān),那么這實(shí)際上是在干什么呢?——建立消息處理模型/系統(tǒng)?! ∫獙W(xué)習(xí)Handler,看到肯定是和消息有關(guān),可能還是需要先熟悉一下消息系統(tǒng)的構(gòu)成和簡(jiǎn)單原理。下面就先學(xué)習(xí)一下消息系統(tǒng)的基本原理。
4、一、消息系統(tǒng)的基本原理和構(gòu)成從一般的消息系統(tǒng)模型的建立大致構(gòu)成以下幾個(gè)部分:l消息原型 l消息隊(duì)列 l發(fā)送消息 l消息循環(huán) l消息獲取 l消息派發(fā)高考 l消息處理大致模型圖如下: 消息系統(tǒng)模型一般會(huì)包括以上七個(gè)部分(消息原型,消息隊(duì)列,消息發(fā)送,消息循環(huán),消息獲取,消息派發(fā),消息處理)。實(shí)際上的核心是消息隊(duì)列和消息循環(huán),其余部分都是圍繞這兩部分進(jìn)行的。 從前面文檔的分析中我們知道Handler就是用來(lái)建立消息處理的系統(tǒng)模型,那么和這里基本消息高考系統(tǒng)模型相比,那么Handler又是如何囊括這七個(gè)部分的呢? 在Android中對(duì)這
5、六個(gè)部分進(jìn)行了抽象成四個(gè)獨(dú)立的部分: Handler,Message,MessageQueue,Looper;·Message就是消息原型,包含消息描述和數(shù)據(jù),·MessageQueue就是消息隊(duì)列,·Looper完成消息循環(huán)·Handler就是駕馭整個(gè)消息系統(tǒng)模型,統(tǒng)領(lǐng)Message,MessgeQueue和Looper; Handler能夠?qū)崿F(xiàn)消息系統(tǒng)模型,那么具體是如何進(jìn)行工作的呢,下面探究一下這其中工作的方法和原理。一、Handler工作原理分析高考 要了解Handler工作原理,先看一下這個(gè)系統(tǒng)模型具體組成的層次結(jié)構(gòu)框架是個(gè)什么
6、樣的。 Looper: 實(shí)現(xiàn)Thread的消息循環(huán)和消息派發(fā),缺省情況下Thread是沒有這個(gè)消息循環(huán)的既沒有Looper;需要主動(dòng)去創(chuàng)建,然后啟動(dòng)Looper的消息循環(huán)loop;與外部的交互通過(guò)Handler進(jìn)行;MessageQueue: 消息隊(duì)列,由Looper所持有,但是消息的添加是通過(guò)Handler進(jìn)行; 消息循環(huán)和消息隊(duì)列都是屬于Thread,而Handler本身并不具有Looper和MessageQueue;但是消息系統(tǒng)的建立和交互,是Thread將Looper和MessageQueue交給某個(gè)Handler維護(hù)建立
7、消息系統(tǒng)模型。高考 所以消息系統(tǒng)模型的核心就是Looper。消息循環(huán)和消息隊(duì)列都是由Looper建立的,而建立Handler的關(guān)鍵就是這個(gè)Looper?! ∫粋€(gè)Thread同時(shí)可以對(duì)應(yīng)多個(gè)Handler,一個(gè)Handler同時(shí)只能屬于一個(gè)Thread。Handler屬于哪個(gè)Thread取決于Handler在那個(gè)Thread中建立?! ≡谝粋€(gè)Thread中Looper也是唯一的,一個(gè)Thread對(duì)應(yīng)一個(gè)Looper,建立Handler的Looper來(lái)自哪個(gè)Thread,Handler屬于哪個(gè)Thread。故建立Thread消息系統(tǒng),就是將Threa
8、d的Looper交給Handler去打理,實(shí)現(xiàn)消息系統(tǒng)模型,完成消息的異步處理。Handler與Thread及Looper的關(guān)系可以用下