Android跨进程通信方式总结

1、概念

IPC:Inter-Process Communication,即跨进程通信。

进程空间:分用户空间(数据不可共享)和内核空间(数据可共享)。(进程内的用户空间跟内核空间需通过系统调用)

由于有可共享的内核空间,所以才能够做跨进程通信。

Binder机制:是Android系统的跨进程通信(IPC)主要的通信方式。

Linux的跨进程通信方式有

  • 传统IPC:匿名管道(PIPE)、信号(signal)、有名管道(FIFO)
  • AT&T Unix:共享内存,信号量,消息队列
  • BSD Unix:Socket

但这些跨进程通信方式不适合在Android系统,涉及性能和安全等方面(如Socket建立连接、断开连接消耗比较大;消息队列和管道采用"存储-转发"方式,涉及多次拷贝过程。安全性方面,Android是开放系统,传统IPC没有任何安全措施,完全依赖上层协议管理,容易被恶意进程访问),所以在Android系统没有大规模使用。

基于以上原因,Android需要建立一套新的IPC机制来满足系统对通信方式传输性能和安全的要求,所以就有了Binder。

Binder基于Client/Server通信模式,传输过程只需要一次拷贝(使用内存映射)

Binder核心是Binder驱动,运行在内核态

 

1)注册服务

  • Server进程向Binder驱动发起服务注册请求;
  • Binder驱动将注册请求转发给 Service Manager进程;
  • Service Manager进程添加该Server进程,即完成注册服务,同时Service Manager进程拥有Server进程信息;

2)获取服务

  • Client进程向Binder驱动发起获取服务的请求,传递要获取的服务名称;
  • Binder驱动将该请求转发给ServiceManager进程;
  • ServiceManager进程查找Client所需的Server信息;
  • ServiceManager进程通过Binder驱动将Server信息返回给Client进程,此时Client进程与Server进程建立上了连接。

3)使用服务

Client进程 根据获取到的 Service信息(Binder代理

  • 0
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值