Android的IPC方式

一、使用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
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值