Android进程间通讯方式
- 使用Bundle
- 在Android四大组件中的三大组件(Activity,Service,Receiver)都支持在Intent中传递Bundle数据,由于Bundle实现了Parcelable接口,所以它可以在不同的进程之间进行传输。
- 文件共享
- 将对象序列化之后保存到文件中,再通过反序列,将对象从文件中读取出来。
- AIDL(Android Interface Define Language)
- 服务端要创建一个AIDL文件,接口是暴露给客户端使用的, 然后创建一个Service,并且实现暴露给客户端的接口,Service用来监听客户端的连接请求
- 客户端也需要在相同的包下声明和服务端一样的aidl接口,并且使用bindService绑定服务端声明的Service,这样在绑定成功的回调ServiceConnection 中就会传入服务端声明IBinder对象,再将此对象转换为AIDL接口所属的类型即可调用AIDL中的方法了。
- Messenger
- ContentProvider Android-ContentProvider
- Socket
- Binder
- 对比Socket减少一次从内核缓冲区到接收方的数据拷贝
- 对比Socket更安全,Socket只需要IP地址就能连接,Binder会添加身份信息标识