8.2 Service3

Binder機(jī)制

IBinder:1.遠(yuǎn)程對(duì)象的基本接口,是為了高性能而設(shè)計(jì)的輕量級(jí)遠(yuǎn)程調(diào)用機(jī)制的核心部分;

? ? ? ? ? ? ? ?2.該接口定義了與遠(yuǎn)程對(duì)象間交互的協(xié)議,不僅用于遠(yuǎn)程調(diào)用,也用于進(jìn)程內(nèi)調(diào)用致燥;

(是Android給我們提供的一個(gè)進(jìn)程間通信(IPC)的一個(gè)接口(不直接實(shí)現(xiàn)),通過(guò)繼承Binder類(lèi)來(lái)實(shí)現(xiàn)進(jìn)程間通信)

Binder機(jī)制淺析

Android使用Binder機(jī)制來(lái)實(shí)現(xiàn)進(jìn)程間的通信的原因

分析

無(wú)需關(guān)心底層如何實(shí)現(xiàn)排截,只需按照AIDL的規(guī)則嫌蚤,自定義一個(gè)接口文件,?然后調(diào)用調(diào)用接口中的方法断傲,就可以完成兩個(gè)進(jìn)程間的通信脱吱。

與消息,廣播等方式相比认罩,適用于涉及多進(jìn)程并發(fā)情況下的進(jìn)程間通信箱蝠。


AIDL使用詳解

IPC:跨進(jìn)程通信(interprocess communication);

AIDL:Binder機(jī)制使用的接口語(yǔ)言(Android Interface Definition Language),并非編程語(yǔ)言宦搬,只是定義兩個(gè)進(jìn)程間的通信接口牙瓢;

注意事項(xiàng):1.接口名詞需要與aidl文件名相同;

? ? ? ? ? ? ? ? ? 2.接口和方法前面不要加訪問(wèn)權(quán)限修飾符:public ,private,protected等间校,也不能用static final矾克;

? ? ? ? ?? ? ? ? ?3.AIDL默認(rèn)支持的類(lèi)型包括Java基本類(lèi)型,String憔足,List胁附,Map,CharSequence滓彰;

? ? ? ? ? ? ? ? ? 4.處3以外的其他類(lèi)型需要import聲明控妻,自定義類(lèi)型作為參數(shù)或者返回值需實(shí)現(xiàn)Parcelable接口;

? ? ? ? ? ? ? ? ? 5.自定義類(lèi)型和AIDL生成的其它接口類(lèi)型在aidl描述文件中揭绑,應(yīng)該顯式import饼暑,即便在該類(lèi)和定義的包在同一個(gè)包中;

? ? ? ? ? ? ? ? ? 6.非原始類(lèi)型中洗做,除了String和CharSequence以外,其余均需要一個(gè)方向指示符(?in彰居、out诚纸、和inout)

? ? ? ? ? ? ? ? ? ? ? in表示由客戶(hù)端設(shè)置,out表示由服務(wù)端設(shè)置陈惰,inout表示客戶(hù)端和服務(wù)端都設(shè)置了該值畦徘;

案例1:簡(jiǎn)單數(shù)據(jù)通信

服務(wù)端:1.main目錄下(與java目錄平級(jí)),新建aidl文件夾及文件(與java主包包名層級(jí)一致)

創(chuàng)建aidl文件

? ? ? ? ????2.創(chuàng)建server端的AIDLService(供clicent端連接調(diào)用)

? ? ? ? ? ? (創(chuàng)建IBinder實(shí)現(xiàn)類(lèi)繼承Stub抬闯,再返回給Service的onBind方法井辆,使之同時(shí)實(shí)現(xiàn)IPerson接口和IBinder接口)

創(chuàng)建Service
清單配置

客戶(hù)端:1.將服務(wù)的aidl文件夾拷過(guò)來(lái)(保持一致);

? ? ? ? ? ? ? ?2.綁定遠(yuǎn)程service溶握,通過(guò)con轉(zhuǎn)換IBinder杯缺,最后調(diào)用服務(wù)端方法;

使用


案例2:復(fù)雜數(shù)據(jù)通信

服務(wù)端客戶(hù)端流程同簡(jiǎn)單數(shù)據(jù)睡榆,這里只演示復(fù)雜數(shù)據(jù)處理 部分萍肆。

1.自定義數(shù)據(jù)類(lèi)型并實(shí)現(xiàn)序列化;

2.新建該數(shù)據(jù)類(lèi)型的aidl文件胀屿;

3.創(chuàng)建業(yè)務(wù)aidl及service服務(wù)

4.client端由于包名與服務(wù)端不一致塘揣,需修改build.gradle

序列化
結(jié)構(gòu)
業(yè)務(wù)aidl
build配置

直接通過(guò)Binder的onTransact完成跨進(jìn)程通信?

服務(wù)端:

服務(wù)端Service
清單配置service

客戶(hù)端:

客戶(hù)端連接service調(diào)用
最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者
  • 序言:七十年代末,一起剝皮案震驚了整個(gè)濱河市宿崭,隨后出現(xiàn)的幾起案子亲铡,更是在濱河造成了極大的恐慌,老刑警劉巖,帶你破解...
    沈念sama閱讀 211,265評(píng)論 6 490
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件奖蔓,死亡現(xiàn)場(chǎng)離奇詭異赞草,居然都是意外死亡,警方通過(guò)查閱死者的電腦和手機(jī)锭硼,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 90,078評(píng)論 2 385
  • 文/潘曉璐 我一進(jìn)店門(mén)房资,熙熙樓的掌柜王于貴愁眉苦臉地迎上來(lái),“玉大人檀头,你說(shuō)我怎么就攤上這事轰异。” “怎么了暑始?”我有些...
    開(kāi)封第一講書(shū)人閱讀 156,852評(píng)論 0 347
  • 文/不壞的土叔 我叫張陵搭独,是天一觀的道長(zhǎng)。 經(jīng)常有香客問(wèn)我廊镜,道長(zhǎng)牙肝,這世上最難降的妖魔是什么? 我笑而不...
    開(kāi)封第一講書(shū)人閱讀 56,408評(píng)論 1 283
  • 正文 為了忘掉前任嗤朴,我火速辦了婚禮配椭,結(jié)果婚禮上,老公的妹妹穿的比我還像新娘雹姊。我一直安慰自己股缸,他們只是感情好,可當(dāng)我...
    茶點(diǎn)故事閱讀 65,445評(píng)論 5 384
  • 文/花漫 我一把揭開(kāi)白布吱雏。 她就那樣靜靜地躺著敦姻,像睡著了一般足淆。 火紅的嫁衣襯著肌膚如雪呻疹。 梳的紋絲不亂的頭發(fā)上婆翔,一...
    開(kāi)封第一講書(shū)人閱讀 49,772評(píng)論 1 290
  • 那天却汉,我揣著相機(jī)與錄音廊敌,去河邊找鬼呈枉。 笑死场躯,一個(gè)胖子當(dāng)著我的面吹牛疤祭,可吹牛的內(nèi)容都是我干的懂更。 我是一名探鬼主播眨业,決...
    沈念sama閱讀 38,921評(píng)論 3 406
  • 文/蒼蘭香墨 我猛地睜開(kāi)眼,長(zhǎng)吁一口氣:“原來(lái)是場(chǎng)噩夢(mèng)啊……” “哼沮协!你這毒婦竟也來(lái)了龄捡?” 一聲冷哼從身側(cè)響起,我...
    開(kāi)封第一講書(shū)人閱讀 37,688評(píng)論 0 266
  • 序言:老撾萬(wàn)榮一對(duì)情侶失蹤慷暂,失蹤者是張志新(化名)和其女友劉穎聘殖,沒(méi)想到半個(gè)月后晨雳,有當(dāng)?shù)厝嗽跇?shù)林里發(fā)現(xiàn)了一具尸體,經(jīng)...
    沈念sama閱讀 44,130評(píng)論 1 303
  • 正文 獨(dú)居荒郊野嶺守林人離奇死亡奸腺,尸身上長(zhǎng)有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點(diǎn)故事閱讀 36,467評(píng)論 2 325
  • 正文 我和宋清朗相戀三年餐禁,在試婚紗的時(shí)候發(fā)現(xiàn)自己被綠了。 大學(xué)時(shí)的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片突照。...
    茶點(diǎn)故事閱讀 38,617評(píng)論 1 340
  • 序言:一個(gè)原本活蹦亂跳的男人離奇死亡帮非,死狀恐怖,靈堂內(nèi)的尸體忽然破棺而出讹蘑,到底是詐尸還是另有隱情末盔,我是刑警寧澤,帶...
    沈念sama閱讀 34,276評(píng)論 4 329
  • 正文 年R本政府宣布座慰,位于F島的核電站陨舱,受9級(jí)特大地震影響,放射性物質(zhì)發(fā)生泄漏版仔。R本人自食惡果不足惜游盲,卻給世界環(huán)境...
    茶點(diǎn)故事閱讀 39,882評(píng)論 3 312
  • 文/蒙蒙 一、第九天 我趴在偏房一處隱蔽的房頂上張望蛮粮。 院中可真熱鬧益缎,春花似錦、人聲如沸然想。這莊子的主人今日做“春日...
    開(kāi)封第一講書(shū)人閱讀 30,740評(píng)論 0 21
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽(yáng)又沾。三九已至,卻和暖如春熙卡,著一層夾襖步出監(jiān)牢的瞬間杖刷,已是汗流浹背。 一陣腳步聲響...
    開(kāi)封第一講書(shū)人閱讀 31,967評(píng)論 1 265
  • 我被黑心中介騙來(lái)泰國(guó)打工驳癌, 沒(méi)想到剛下飛機(jī)就差點(diǎn)兒被人妖公主榨干…… 1. 我叫王不留滑燃,地道東北人。 一個(gè)月前我還...
    沈念sama閱讀 46,315評(píng)論 2 360
  • 正文 我出身青樓颓鲜,卻偏偏與公主長(zhǎng)得像表窘,于是被迫代替她去往敵國(guó)和親。 傳聞我的和親對(duì)象是個(gè)殘疾皇子甜滨,可洞房花燭夜當(dāng)晚...
    茶點(diǎn)故事閱讀 43,486評(píng)論 2 348

推薦閱讀更多精彩內(nèi)容