真实的国产乱ⅩXXX66竹夫人,五月香六月婷婷激情综合,亚洲日本VA一区二区三区,亚洲精品一区二区三区麻豆

成都創(chuàng)新互聯(lián)網(wǎng)站制作重慶分公司

Android進程間通訊之messenger

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

在茂南等地區(qū),都構(gòu)建了全面的區(qū)域性戰(zhàn)略布局,加強發(fā)展的系統(tǒng)性、市場前瞻性、產(chǎn)品創(chuàng)新能力,以專注、極致的服務(wù)理念,為客戶提供成都做網(wǎng)站、成都網(wǎng)站制作 網(wǎng)站設(shè)計制作按需策劃,公司網(wǎng)站建設(shè),企業(yè)網(wǎng)站建設(shè),成都品牌網(wǎng)站建設(shè),全網(wǎng)營銷推廣,外貿(mào)營銷網(wǎng)站建設(shè),茂南網(wǎng)站建設(shè)費用合理。

 

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

 

與 AIDL 比較:

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

 

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

 

接下來看下怎么寫:

 

服務(wù)端:

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

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

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

 

客戶端:

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

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

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

4.解綁服務(wù)

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

 

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

 

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

 

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

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

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

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

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

 

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

 

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


網(wǎng)站題目:Android進程間通訊之messenger
鏈接URL:http://weahome.cn/article/jsgceg.html

其他資訊

在線咨詢

微信咨詢

電話咨詢

028-86922220(工作日)

18980820575(7×24)

提交需求

返回頂部