项目地址:
Server端代码:Server端代码链接
Client端代码:Client端代码链接
1、IPC的基本要求
IPC(Inter-Process Communication)进程间通信是要在两个相互独立的进程之间进行信息的传递,在Android中每个进程都会被分配一个独立的虚拟机,以及内存空间,还会有自己的Application,所以进程间数据是不共享的,想要共享就只能通过一些方法来让这些数据在整两个进程间进行传递。关于如何传递就是要实现序列化(Parcelable、Serializable都可以)。
2、Android中IPC的几种方式
1)Bundle
也就是使用Intent携带Bundle信息在两个进程间进行传递,但是Intent一般只用来进行进程间的启动,如果要是用来进行两个进程间信息的传递的话就麻烦了,毕竟信息传递是双向的,Intent虽然也可以进行双向的信息传递,但过程繁琐,处理情况过多,很不方便。
2)文件共享
两个进程同时读/写同一个文件来实现数据的共享,但是文件共享这种方式有一个最大的问题就是并发读/写问题,当另一进程在读数据的同时另一个程序在写数据,这会让数据的同步出现问题。
3)Messenger信使
Messenger是Google提供的轻量级的IPC方案,底层实现也是AIDL,但是Messenger的最大问题是它以串行的方式来处理客户端发送来的消息,如果大量的消息同时发送到服务端,服务端应然只能一个个处理,如果有大量的并发请求,那么用Messenger就不合适了。
4)AIDL(Android interface definition language)
3、AIDL的使用
AIDL要求在使用的Client端与Server端有相同的AIDL文件,所以呢在工程中新建一个包,然后把所有的AIDL文件都放在这个包名下,然后再去进行拷贝,这样写会容易一些,但是还会有这样那样的问题,下面来看一下到底如何使用
1)Server端
Android Studio会自动为AIDL文件创建新包,位置为app–>src–>main–>aidl
新建一个名为IStudentInterface的AIDL文件,并添加两个函数来进行示例操作
package com.example.administrator.ipc_server;
import com.example.administrator.ip