Android Binder跨进程通信

1、跨进程的原理

跨进程通信必须经过第三方介质,要么是内存,要么是外存(文件)
跨进程通信
以内核为例:进程A将自己的数据拷贝到内核中,进程B在将内核中的数据拷贝到进程B中。

问:跨进程通信需要内核的支持,Binder不是内核的一部分,为什么可以支持跨进程通信?
答:Binder采用了Linux的动态内核可加载模块机制,将Binder作为一个内核模块加载到了内核空间,这个模块叫Binder驱动

Binder采用了Linux中的内存映射技术,减少了数据的拷贝次数,提高了效率
内存映射
在这里插入图片描述

2、Binder通信过程中涉及到的模型

  1. Binder驱动:类似电话线路
  2. Binder:电话号码
  3. Client:代表打电话的人
  4. Server:代表接电话的人
  5. ServerManager:代表114号码台

过程:接电话的人(Server)告诉114号码台(ServerManager)自己的号码(Binder),打电话的人(Client)向114号码台(ServerManager)查询某个人的号码(Binder),查询到后,给对方打电话。整个通信过程由电话线路(Binder驱动支持)。
注册服务
查询服务
开始通信

3、Java中看具体的类

  1. 服务端需要关心的:
    • IInterface:对外提供的服务需要继承这个接口,表示接口中的方法可以跨进程提供服务
    • IBinder:需要跨进程传输的对象要实现这个类,表示该对象可以跨进程传输(类似于用IBinder包装了一下),具体由Binder实现
  2. 客户端需要关心的:
    • ServiceConnection:从中拿到Binder对象,从Binder中解析出传输的对象。
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值