大家都知道aidl是跨进程通信的一种语言,然而我们更关心如何实现跨进程通信,既然是通信肯定是两个主题之间实现,一个是客户端,一个是服务端,我们通过以前的网络知识可以知道客户端与服务端之间通信都是通过接口来进行的,而跨进程通信也是这样的流程,那么接口又是谁那?IBinder,这个接口以及它的一个实现类binder是Android实现跨进程通信的重要技术,那么既然是接口或者抽象类,那么肯定在客户端和服务端有它们的影子,那么让我们看一下服务端创建流程,通过继承service的onbinder的方法返回一个IBinder接口,我们需要返回一个实现了IBinder接口的类,那么这个类又是谁那?我们知道aidl文件的创建流程,它实际是创建了一个类名字叫stub,它实现了IBinder接口,我们只需要在服务端类中new出来stub类,然后传给onbinder方法中,就可以完成服务端的数据绑定,然后就是客户端了,我们为何要把aidl包复制到客户端中,其中最重要的目的就是为了能够找到服务端中那个实现IBinder的类也就是Stub,下面就是一个实现客户端与服务端通信的一个重要类ServiceConnection类似http协议中的connecttion,通过链接来获取返回数据进行处理在这里我们可以通过实例化stub类来调取服务端的公共方法了,service的绑定我就不多啰嗦了
戏说aidl跨进程通信流程
最新推荐文章于 2023-08-21 09:00:33 发布