Hermes跨進(jìn)程通信原理解析

簡(jiǎn)述

EventBus是事件總線(xiàn)播聪,用來(lái)處理一些事件及時(shí)通知的氮双,用來(lái)處理UI或數(shù)據(jù)。
但是是單進(jìn)程的胀滚,不能跨進(jìn)程咳短;說(shuō)到跨進(jìn)程就避不開(kāi)binder通信。

Hermes就是快進(jìn)程版本的EventBus蛛淋;如果了解Binder的話(huà)那理解起來(lái)應(yīng)該很簡(jiǎn)單咙好,就是基本思路不變,然后在這個(gè)基礎(chǔ)上通過(guò)binder通信褐荷。

Hermes是出于一個(gè)單例類(lèi)來(lái)做整體處理的勾效,通知也是調(diào)用這個(gè)單例類(lèi)的某個(gè)方法,然后在方法中怎么通知到具體的東西叛甫,你就可以繼續(xù)按照EventBus的思想繼續(xù)操作了层宫。

說(shuō)一下“破解版”的思路。

看視頻課講解其监,沒(méi)有自己去扒一遍萌腿;整理了一下思路和方案邏輯,覺(jué)得講的思路是完全行得通的抖苦。

在A進(jìn)程中注冊(cè)一個(gè)單例類(lèi)(用接口的方式)毁菱,搜集類(lèi)的全限定名米死,以及對(duì)應(yīng)的所有方法,放到集合中緩存贮庞。

然后在B進(jìn)程中峦筒,通過(guò)aidl來(lái)綁定A進(jìn)程中的Service,這樣就有了跨進(jìn)程通信的能力窗慎。

然后在B進(jìn)程中拿到A進(jìn)程中的單例物喷,把單例對(duì)應(yīng)的類(lèi)的全限定名和方法名binder發(fā)過(guò)去;A進(jìn)程中收到后解析對(duì)應(yīng)的類(lèi)的全限定名和方法遮斥,然后反射執(zhí)行獲取單例峦失,然后將單例對(duì)象保存在A進(jìn)程中的一個(gè)集合中。

然后在B進(jìn)程通過(guò)動(dòng)態(tài)代理的方式生成一個(gè)新的對(duì)象給B持有术吗;這時(shí)B就可以調(diào)用A中單例的某個(gè)方法了宠进。(這里的動(dòng)態(tài)代理就是個(gè)假動(dòng)作,并沒(méi)有發(fā)揮出動(dòng)態(tài)代理的作用藐翎,就只是生成個(gè)句柄供B調(diào)用某個(gè)單例方法的時(shí)候方便材蹬;其實(shí)可以寫(xiě)個(gè)方法,里面就放類(lèi)的全限定名吝镣,然后放方法名以及參數(shù)也是可以的

此時(shí)B中調(diào)用A中單例的某個(gè)方法堤器,參數(shù)啥的都帶上,binder發(fā)過(guò)去末贾;A中收到后解析出對(duì)應(yīng)的類(lèi)的全限定名和方法名闸溃,之前集合中存儲(chǔ)了單例類(lèi)的對(duì)象,于是可以直接反射執(zhí)行該方法拱撵。

至于如何在這個(gè)單例方法中去響應(yīng)類(lèi)似EventBus的作用辉川,在Activity/Fragemnt中響應(yīng)更新UI或者數(shù)據(jù),可以再撿起EventBus中的那一套拴测,也用集合去緩存所有的注解方法乓旗,然后反射執(zhí)行對(duì)應(yīng)的方法,只不過(guò)是多了一層中轉(zhuǎn)集索。


等完成自己的規(guī)劃屿愚,再去扒一邊,看是不是差不多务荆,順帶看看細(xì)節(jié)妆距。

?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者
  • 序言:七十年代末,一起剝皮案震驚了整個(gè)濱河市函匕,隨后出現(xiàn)的幾起案子娱据,更是在濱河造成了極大的恐慌,老刑警劉巖盅惜,帶你破解...
    沈念sama閱讀 211,948評(píng)論 6 492
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件中剩,死亡現(xiàn)場(chǎng)離奇詭異忌穿,居然都是意外死亡,警方通過(guò)查閱死者的電腦和手機(jī)咽安,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 90,371評(píng)論 3 385
  • 文/潘曉璐 我一進(jìn)店門(mén)伴网,熙熙樓的掌柜王于貴愁眉苦臉地迎上來(lái)蓬推,“玉大人妆棒,你說(shuō)我怎么就攤上這事》蟹” “怎么了糕珊?”我有些...
    開(kāi)封第一講書(shū)人閱讀 157,490評(píng)論 0 348
  • 文/不壞的土叔 我叫張陵,是天一觀(guān)的道長(zhǎng)毅糟。 經(jīng)常有香客問(wèn)我红选,道長(zhǎng),這世上最難降的妖魔是什么姆另? 我笑而不...
    開(kāi)封第一講書(shū)人閱讀 56,521評(píng)論 1 284
  • 正文 為了忘掉前任喇肋,我火速辦了婚禮,結(jié)果婚禮上迹辐,老公的妹妹穿的比我還像新娘蝶防。我一直安慰自己,他們只是感情好明吩,可當(dāng)我...
    茶點(diǎn)故事閱讀 65,627評(píng)論 6 386
  • 文/花漫 我一把揭開(kāi)白布间学。 她就那樣靜靜地躺著,像睡著了一般印荔。 火紅的嫁衣襯著肌膚如雪低葫。 梳的紋絲不亂的頭發(fā)上,一...
    開(kāi)封第一講書(shū)人閱讀 49,842評(píng)論 1 290
  • 那天仍律,我揣著相機(jī)與錄音嘿悬,去河邊找鬼。 笑死水泉,一個(gè)胖子當(dāng)著我的面吹牛鹊漠,可吹牛的內(nèi)容都是我干的。 我是一名探鬼主播茶行,決...
    沈念sama閱讀 38,997評(píng)論 3 408
  • 文/蒼蘭香墨 我猛地睜開(kāi)眼躯概,長(zhǎng)吁一口氣:“原來(lái)是場(chǎng)噩夢(mèng)啊……” “哼!你這毒婦竟也來(lái)了畔师?” 一聲冷哼從身側(cè)響起娶靡,我...
    開(kāi)封第一講書(shū)人閱讀 37,741評(píng)論 0 268
  • 序言:老撾萬(wàn)榮一對(duì)情侶失蹤,失蹤者是張志新(化名)和其女友劉穎看锉,沒(méi)想到半個(gè)月后姿锭,有當(dāng)?shù)厝嗽跇?shù)林里發(fā)現(xiàn)了一具尸體塔鳍,經(jīng)...
    沈念sama閱讀 44,203評(píng)論 1 303
  • 正文 獨(dú)居荒郊野嶺守林人離奇死亡,尸身上長(zhǎng)有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點(diǎn)故事閱讀 36,534評(píng)論 2 327
  • 正文 我和宋清朗相戀三年呻此,在試婚紗的時(shí)候發(fā)現(xiàn)自己被綠了轮纫。 大學(xué)時(shí)的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片。...
    茶點(diǎn)故事閱讀 38,673評(píng)論 1 341
  • 序言:一個(gè)原本活蹦亂跳的男人離奇死亡焚鲜,死狀恐怖掌唾,靈堂內(nèi)的尸體忽然破棺而出,到底是詐尸還是另有隱情忿磅,我是刑警寧澤糯彬,帶...
    沈念sama閱讀 34,339評(píng)論 4 330
  • 正文 年R本政府宣布,位于F島的核電站葱她,受9級(jí)特大地震影響撩扒,放射性物質(zhì)發(fā)生泄漏。R本人自食惡果不足惜吨些,卻給世界環(huán)境...
    茶點(diǎn)故事閱讀 39,955評(píng)論 3 313
  • 文/蒙蒙 一搓谆、第九天 我趴在偏房一處隱蔽的房頂上張望。 院中可真熱鬧豪墅,春花似錦泉手、人聲如沸。這莊子的主人今日做“春日...
    開(kāi)封第一講書(shū)人閱讀 30,770評(píng)論 0 21
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽(yáng)。三九已至状囱,卻和暖如春术裸,著一層夾襖步出監(jiān)牢的瞬間,已是汗流浹背亭枷。 一陣腳步聲響...
    開(kāi)封第一講書(shū)人閱讀 32,000評(píng)論 1 266
  • 我被黑心中介騙來(lái)泰國(guó)打工袭艺, 沒(méi)想到剛下飛機(jī)就差點(diǎn)兒被人妖公主榨干…… 1. 我叫王不留,地道東北人叨粘。 一個(gè)月前我還...
    沈念sama閱讀 46,394評(píng)論 2 360
  • 正文 我出身青樓猾编,卻偏偏與公主長(zhǎng)得像,于是被迫代替她去往敵國(guó)和親升敲。 傳聞我的和親對(duì)象是個(gè)殘疾皇子答倡,可洞房花燭夜當(dāng)晚...
    茶點(diǎn)故事閱讀 43,562評(píng)論 2 349

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