Android Binder机制实现进程间数据交换(不使用aidl实现)

一、Binder机制(从framework层分析,Java层面分析)

在Android中,Binder用于完成进程间通信(IPC),即把多个进程关联在一起。

比如,普通应用程序可以调用音乐播放服务提供的播放、暂停、停止等功能。 Binder

工作在Linux层面,属于一个驱动只是这个驱动不需要硬件,或者说其操作的硬件是

基于一小段内存。从线程的角度来讲,Binder驱动代码运行在内核态,客户端程序调

Binder是通过系统调用完成的。Binder是一种架构,这种架构提供了服务端接口、

Binder驱动、客户端接口三个模块。Binder实际上是一种是C/S通信模式。C/S通信过

的重要函数:

a)在服务端,创建需要创建Binder类或者其衍生子类,其中需要重写Binder的

onTransact(int code, Parcel data, Parcel reply, int flags)方法,完成对客户端请求的监听;

其中,code是服务端和客户端约定的一种信息约定;

b)在客户端,首先要获得服务端的Binder对象的引用(至于具体怎么获取,后面会

详细说明,这里知道这个概念即可),在或得Binder对象的引用之后,可以调用binder.

transact(int code,Parcel data,Parcel

  • 1
    点赞
  • 12
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
Android Binder机制Android系统中一种进程通信(IPC)的机制,用于在不同进程进行数据交换和通信。通过Binder机制Android应用程序可以实现进程的数据共享和相互调用。 Binder机制基于C/S架构,主要由服务端、客户端和Binder驱动组成。服务端提供一个或多个服务,将其注册到Binder驱动中,并通过Binder对象发送和接收数据;客户端通过获取服务端的Binder对象,与其进行通信和交互;而Binder驱动负责管理Binder对象的创建、销毁和通信。 在Binder机制中,Binder对象充当了交互的桥梁。每个Binder对象都有一个唯一的标识符(具体是一个32位的整数),用于识别和查找对应的服务端。通过Binder对象,客户端和服务端可以进行方法调用、数据传输等操作。服务端通过Binder对象将数据发送给客户端,客户端通过Binder对象将数据传递给服务端。 Binder机制设计了多种数据结构来实现进程通信,如BpBinder、BpRefBase、Parcel等。BpBinder负责处理进程的通信,并通过Binder Proxy将方法调用转发给服务端;BpRefBase用于引用计数,确保对象在不再使用时能够正确释放;Parcel用于在进程传递数据,可以实现序列化和反序列化。 总结来说,Android Binder机制Android系统中一种进程通信的机制,通过Binder对象实现不同进程数据交换和通信。通过服务端、客户端和Binder驱动的协作,应用程序可以实现进程的数据共享和相互调用。

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值