IPC通信學(xué)習(xí)筆記1

IPC全稱 Inter-process communication 進程間通信

開始學(xué)習(xí)之前我們先了解一個名詞“尋址“,不管你們怎么看反正我一聽見這個詞就覺得很牛逼,有木有?(因為不懂呀?。ぶ?,顧名思義就是尋找地址,在計算機中常用的有寄存器尋址、指令尋址等等(這一發(fā)散我估計就收不回來了)。還是舉個例子吧,小伙伴們出去搞事情,是不是都得先約個地點呀?老去同一個地方浪,肯定沒意思,就決定去一個沒去的地方;那么問題來了,我們該怎么過去呢?對于科技發(fā)達的今天,這個問題已經(jīng)很好解決了;小吳說,我直接打車過去司機肯定知道(指令尋址有木有?);小寶說,我用百度地圖導(dǎo)航過去(寄存器尋址有木有?);三濤說,我直接走過去(這就厲害了,直接尋址的有木有?)。千言萬語匯成一句話,尋址就是尋找地址,你可以有很多種方式去做這件事,但是最終的目的就是找到地址罷了。(這個詞就是這么個理解,有木有很簡單?)

看到這里有小伙伴就是有意見了,我們是來學(xué)習(xí)IPC的,你講這么多尋址干嘛呢?你要先尋址找到對方,才能通信嘛!來來來,我們這就開始:進程間通信,顧名思義就是進程之間通信嘛,我們先撇開進程不看,主要是通信;通信是什么呢?反正我的理解就是兩人聊聊天咯,但是兩個人要好好的聊天是有很多前置條件的:

1、確定通信方式(比如:微信聊、QQ聊或者短信聊等)

2、確定聯(lián)系地址,建立連接(用微信的得加個微信號,用QQ的得加個QQ號等)

3、統(tǒng)一通信語言(我只會中文,你卻要跟我講英文,這個肯定交流不好;不過現(xiàn)在有翻譯啦,你帶個翻譯也一樣可以正常交流的)

往下講之前先插播一個名詞AIDL

AIDL全稱是Android Interface Definition Language,也就是Android接口定義語言。與您可能使用過的其他IDL 類似, 您可以利用它定義客戶端與服務(wù)使用進程間通信(IPC) 進行相互通信時都認(rèn)可的編程接口。

為什么要解釋這個名詞呢?因為在Android進程間通信主要就是依靠AIDL。但是久而久之,當(dāng)有人提及什么是IPC的時候,大家張口就回答AIDL,對于這個現(xiàn)象我要表達的意思是你沒有弄懂IPC,你只是簡單知道了Android中怎么實現(xiàn)IPC的而已。

先宏觀看一下Android IPC的架構(gòu)圖(這是宏觀圖,不包含細(xì)節(jié),不要問我為什么沒有看見IBinder)

如上圖所示,進程1和進程2的通信并不是直接的,它們之間經(jīng)過了驅(qū)動層中轉(zhuǎn)。我們來分析一下,這幅圖里究竟做了什么事情:

1、進程1向驅(qū)動發(fā)起和進程2通信的請求

2、驅(qū)動經(jīng)過尋址找到進程2,并通知進程1的請求

3、進程2接受請求,并通知驅(qū)動回復(fù)進程1

4、驅(qū)動講進程2回復(fù)通知給進程1,建立通信關(guān)系

來來,回到我們一開始講的通信。

1、確定通信方式AIDL

2、通過驅(qū)動尋址,建立連接

3、我們使用的Java語言聊天(谷歌給我們請了翻譯JNI)

第一講就這么多,想要學(xué)習(xí)一個東西,先宏觀的了解它,再去細(xì)致的學(xué)習(xí)它,這樣才能事半功倍。

最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
【社區(qū)內(nèi)容提示】社區(qū)部分內(nèi)容疑似由AI輔助生成,瀏覽時請結(jié)合常識與多方信息審慎甄別。
平臺聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點,簡書系信息發(fā)布平臺,僅提供信息存儲服務(wù)。

相關(guān)閱讀更多精彩內(nèi)容

友情鏈接更多精彩內(nèi)容