Android内核剖析之Binder
【Android内核剖析之Binder】 Binder是Android系统中核心的组件之一,它是实现Android进程间通信(IPC)的关键机制。它的名字来源于英文单词"别针",象征着它能够连接和协调不同进程间的通信,就像别针将多张纸张连接在一起一样。Binder工作在Linux内核层面,作为驱动程序,但不依赖于物理硬件,而是利用一小段内存作为硬件接口。 **5.1 Binder框架** Binder架构由服务端接口、Binder驱动和客户端接口三部分组成。服务端通常是一个实现了Binder接口的类实例,这个实例创建后会启动一个隐藏的内部线程,用于处理来自Binder驱动的消息。当服务端接收到消息,它会在`onTransact()`方法中执行相应的服务代码。为了创建一个Binder服务,开发者需要重写`onTransact()`,根据输入参数执行对应的服务功能。 Binder驱动在每个服务端Binder对象创建时,会在驱动中创建一个`mRemote`对象,类型同样是Binder类。客户端通过`mRemote`引用来访问远程服务。客户端调用`transact()`方法, Binder驱动则负责将参数以线程间通信的方式发送到服务端,并挂起客户端线程等待服务端执行完成后的通知。这种设计使得客户端看似直接调用远程服务,实际上所有通信都在Binder驱动的调度下进行。 **5.2 设计Service端** 创建一个基于Binder的服务端非常简单,只需继承Binder类并创建一个新的服务类。例如,我们创建一个`MusicPlayerService`,提供`start(String filePath)`和`stop()`两个方法。服务启动后,会有一个新的线程在后台运行,可以通过ddms工具查看到。 服务端需要重载`onTransact()`方法来处理客户端传递的参数。由于客户端和服务端需要对参数的位置有共识,所以需要预先约定数据的排列方式。例如,约定数据包`data`中的第一个数据为`filePath`,然后在`onTransact()`中读取并处理。同时,通过`code`变量来识别客户端期望调用的服务方法,这需要客户端和服务端之间有一组预定义的整数值来对应不同的服务函数。 在服务端的`onTransact()`中,`enforceInterface()`函数用于执行权限检查,确保只有拥有相应权限的客户端才能调用服务。`writeInt()`和`readInt()`等方法则用于读写数据,确保数据正确传输。 总结来说,Binder机制是Android系统实现高效、安全的进程间通信的基础。它通过服务端的Binder对象、驱动中的`mRemote`对象以及客户端的接口协同工作,实现了跨进程调用的功能。理解并掌握Binder的工作原理对于Android系统的深入理解和应用开发至关重要。
剩余13页未读,继续阅读
- 紫金侠客2012-11-21和书里的内容一样的,写的比较精炼。
- hamlingong2012-06-14很清晰,可惜只有四章。
- aaronwong_aquarius2012-07-24对于初学者,可以参考一下。
- 粉丝: 0
- 资源: 3
- 我的内容管理 展开
- 我的资源 快来上传第一个资源
- 我的收益 登录查看自己的收益
- 我的积分 登录查看自己的积分
- 我的C币 登录后查看C币余额
- 我的收藏
- 我的下载
- 下载帮助
最新资源
- MP3设计原理图与PCB
- 双驱双向潜伏式AGV小车3D图纸和工程图机械结构设计图纸和其它技术资料和技术方案非常好100%好用.zip
- 基于java+springboot+mysql+微信小程序的员工日志管理信息系统 源码+数据库+论文(高分毕业设计).zip
- 720n op打印服务器插件三个用
- 双向变距机构3D图纸和工程图机械结构设计图纸和其它技术资料和技术方案非常好100%好用.zip
- HuggingFace tokenizer基本使用及示例展示
- 基于扰动观测器的永磁同步电机(PMSM)模型预测控制(MPC)仿真,速度外环基于模型预测控制、电流内环基于无差拿控制搭建,控制效果理想,模块程序设计通俗易通,送参考文献,方便学习理解
- 计算机二级考试全攻略(含试题)
- AIGC基础知识及应用畅想分享
- 《四维虚拟导管:二尖瓣主动脉疾病主动脉内血流动力学的无创评估》matlab代码.rar
- AM的平方律调制解调方案 matlab代码.rar
- AHRS(航姿算法)的Matlab程序.rar
- DeepRLPID,利用深度强化学习算法对飞机俯仰PID控制器进行自适应调整Matlab代码.rar
- HVAC_RL,暖通空调控制器的强化学习Matlab实现.rar
- AUV MatLab的强化学习QLearning自调谐PID控制器.rar
- matalb求解化工中热量传递的一个实际问题.rar