Android進(jìn)程間通訊之messenger-創(chuàng)新互聯(lián)

平時(shí)一說(shuō)進(jìn)程間通訊,大家都會(huì)想到AIDL,其實(shí)messenger和AIDL作用一樣,都可以進(jìn)行進(jìn)程間通訊。它是基于消息的進(jìn)程間通信,就像子線程和UI線程發(fā)送消息那樣,是不是很簡(jiǎn)單,還不用去寫AIDL文件,是不是有點(diǎn)小爽。哈哈。

創(chuàng)新互聯(lián)建站2013年開創(chuàng)至今,是專業(yè)互聯(lián)網(wǎng)技術(shù)服務(wù)公司,擁有項(xiàng)目成都網(wǎng)站建設(shè)、做網(wǎng)站網(wǎng)站策劃,項(xiàng)目實(shí)施與項(xiàng)目整合能力。我們以讓每一個(gè)夢(mèng)想脫穎而出為使命,1280元安國(guó)做網(wǎng)站,已為上家服務(wù),為安國(guó)各地企業(yè)和個(gè)人服務(wù),聯(lián)系電話:13518219792

此外,還支持記錄客戶端對(duì)象的Messenger,然后可以實(shí)現(xiàn)一對(duì)多的通信;甚至作為一個(gè)轉(zhuǎn)接處,任意兩個(gè)進(jìn)程都能通過(guò)服務(wù)端進(jìn)行通信。

與 AIDL 比較:

當(dāng)您需要執(zhí)行 IPC 時(shí),為您的接口使用 Messenger 要比使用 AIDL 實(shí)現(xiàn)更加簡(jiǎn)單,因?yàn)?Messenger 會(huì)將所有服務(wù)調(diào)用排入隊(duì)列,而純粹的 AIDL 接口會(huì)同時(shí)向服務(wù)發(fā)送多個(gè)請(qǐng)求,服務(wù)隨后必須應(yīng)對(duì)多線程處理。

對(duì)于大多數(shù)應(yīng)用,服務(wù)不需要執(zhí)行多線程處理,因此使用 Messenger 可讓服務(wù)一次處理一個(gè)調(diào)用。如果您的服務(wù)必須執(zhí)行多線程處理,則應(yīng)使用 AIDL 來(lái)定義接口。

接下來(lái)看下怎么寫:

服務(wù)端:

1.創(chuàng)建一個(gè)handler對(duì)象,并實(shí)現(xiàn)hanlemessage方法,用于接收來(lái)自客戶端的消息,并作處理

2.創(chuàng)建一個(gè)messenger(送信人),封裝handler

3.messenger創(chuàng)建一個(gè)IBinder對(duì)象,通過(guò)onBind返回給客戶端

客戶端:

1.在activity中綁定服務(wù)

2.創(chuàng)建ServiceConnection并在其中使用IBinder 將 Messenger實(shí)例化

3.使用Messenger向服務(wù)端發(fā)送消息

4.解綁服務(wù)

5.服務(wù)端中在 handleMessage()方法中接收每個(gè) Message

這樣,客戶端并沒(méi)有調(diào)用服務(wù)的“方法”。而客戶端傳遞的“消息”(Message 對(duì)象)是服務(wù)在其 Handler 中接收的。

上面實(shí)現(xiàn)的僅僅是單向通信,即客戶端給服務(wù)端發(fā)送消息,如果我需要服務(wù)端給客戶端發(fā)送消息又該怎樣做呢?

其實(shí),這也是很容易實(shí)現(xiàn)的,下面就讓我們接著上面的步驟來(lái)實(shí)現(xiàn)雙向通信吧

1.在客戶端中創(chuàng)建一個(gè)Handler對(duì)象,用于處理服務(wù)端發(fā)過(guò)來(lái)的消息

2.創(chuàng)建一個(gè)客戶端自己的messenger對(duì)象,并封裝handler。

3.將客戶端的Messenger對(duì)象賦給待發(fā)送的Message對(duì)象的replyTo字段

4.在服務(wù)端的Handler處理Message時(shí)將客戶端的Messenger解析出來(lái),并使用客戶端的Messenger對(duì)象給客戶端發(fā)送消息

這樣就實(shí)現(xiàn)了客戶端和服務(wù)端的雙向通信了。

注意:注:Service在聲明時(shí)必須對(duì)外開放,即android:exported="true";另外,我在開發(fā)完APP都會(huì)用一些APP在線自動(dòng)化測(cè)試工具進(jìn)行測(cè)試:www.ineice.com

另外有需要云服務(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)景需求。

文章題目:Android進(jìn)程間通訊之messenger-創(chuàng)新互聯(lián)
分享URL:http://www.muchs.cn/article8/cdecip.html

成都網(wǎng)站建設(shè)公司_創(chuàng)新互聯(lián),為您提供軟件開發(fā)Google、品牌網(wǎng)站設(shè)計(jì)網(wǎng)站收錄、用戶體驗(yàn)、企業(yè)網(wǎng)站制作

廣告

聲明:本網(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)

小程序開發(fā)