Android的IPC方式

来源:互联网 发布:forespider爬虫软件 编辑:程序博客网 时间:2024/06/06 23:18

一、使用Messenger

1、服务端进程

服务端创建一个Service来处理客户端的连接请求,同时创建一个Handler对象并通过它创建Messenger对象,然后在Service的onBind中返回Messenger对象底层的Binder即可

2、客户端进程

绑定服务端的Service,然后用服务端返回的IBinder对象创建Messenger,通过这个Messenger就可以向服务端发送消息,消息类型为Message对象

备注:以串行的方式处理客户端发来的消息,即大量消息同时发送到服务端,服务端仍然一个一个处理,如果有大量的并发请求,那么用Messenger就不大合适了

二、使用AIDL

1、服务端

服务端首先要创建一个Service来监听客户端的连接请求,然后创建一个AIDL文件,将暴露给客户端的接口在这个AIDL文件中声明,最后在Service实现这个AIDL接口即可

2、客户端

首先需要绑定服务端的Service,绑定成功后,将服务端返回的Binder对象转成AIDL接口所属的类型,接着就可以调用AIDL中的方法了

备注:

1、CopyOnWriteArrayList:支持并发读/写,AIDL方法是在服务端的Binder线程池中执行的,当多个客户端同时连接的时候,会存在多线程同时访问的情形,可以直接使用CopyOnWriteArrayList进行自动线程同步。

2、RemoteCallBackListener:是系统专门提供删除跨进程listener的接口

三、使用Socket

1、Socket也称“套接字”,分为流式套接字和用户数据报套接字,分别对应于网络传输控制层中的TCP和UDP协议

2、TCP协议是面向连接的协议,提供稳定的双向通信功能,TCP连接的建立需要经过‘三次握手’才能完成,为了提供稳定的数据传输功能,其本身提供超时重传机制,因此具有很高的稳定性

3、UDP是无连接的,提供不稳定的单向通信功能,性能上,UDP具有更高的效率,其缺点是不能保证数据一定能够正确传输,尤其是在网络拥塞的情况下

0 0