IPC通信学习笔记1

IPC全称 Inter-process communication 进程间通信

开始学习之前我们先了解一个名词“寻址“,不管你们怎么看反正我一听见这个词就觉得很牛逼,有木有?(因为不懂呀!)寻址,顾名思义就是寻找地址,在计算机中常用的有寄存器寻址、指令寻址等等(这一发散我估计就收不回来了)。还是举个例子吧,小伙伴们出去搞事情,是不是都得先约个地点呀?老去同一个地方浪,肯定没意思,就决定去一个没去的地方;那么问题来了,我们该怎么过去呢?对于科技发达的今天,这个问题已经很好解决了;小吴说,我直接打车过去司机肯定知道(指令寻址有木有?);小宝说,我用百度地图导航过去(寄存器寻址有木有?);三涛说,我直接走过去(这就厉害了,直接寻址的有木有?)。千言万语汇成一句话,寻址就是寻找地址,你可以有很多种方式去做这件事,但是最终的目的就是找到地址罢了。(这个词就是这么个理解,有木有很简单?)

看到这里有小伙伴就是有意见了,我们是来学习IPC的,你讲这么多寻址干嘛呢?你要先寻址找到对方,才能通信嘛!来来来,我们这就开始:进程间通信,顾名思义就是进程之间通信嘛,我们先撇开进程不看,主要是通信;通信是什么呢?反正我的理解就是两人聊聊天咯,但是两个人要好好的聊天是有很多前置条件的:

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

2、确定联系地址,建立连接(用微信的得加个微信号,用QQ的得加个QQ号等)

3、统一通信语言(我只会中文,你却要跟我讲英文,这个肯定交流不好;不过现在有翻译啦,你带个翻译也一样可以正常交流的)

往下讲之前先插播一个名词AIDL

AIDL全称是Android Interface Definition Language,也就是Android接口定义语言。与您可能使用过的其他IDL 类似, 您可以利用它定义客户端与服务使用进程间通信(IPC) 进行相互通信时都认可的编程接口。

为什么要解释这个名词呢?因为在Android进程间通信主要就是依靠AIDL。但是久而久之,当有人提及什么是IPC的时候,大家张口就回答AIDL,对于这个现象我要表达的意思是你没有弄懂IPC,你只是简单知道了Android中怎么实现IPC的而已。

先宏观看一下Android IPC的架构图(这是宏观图,不包含细节,不要问我为什么没有看见IBinder)

如上图所示,进程1和进程2的通信并不是直接的,它们之间经过了驱动层中转。我们来分析一下,这幅图里究竟做了什么事情:

1、进程1向驱动发起和进程2通信的请求

2、驱动经过寻址找到进程2,并通知进程1的请求

3、进程2接受请求,并通知驱动回复进程1

4、驱动讲进程2回复通知给进程1,建立通信关系

来来,回到我们一开始讲的通信。

1、确定通信方式AIDL

2、通过驱动寻址,建立连接

3、我们使用的Java语言聊天(谷歌给我们请了翻译JNI)

第一讲就这么多,想要学习一个东西,先宏观的了解它,再去细致的学习它,这样才能事半功倍。

你可能感兴趣的:(IPC通信学习笔记1)