Binder机制(非常好理解)
来源:互联网 发布:在淘宝上怎样买东西 编辑:程序博客网 时间:2024/06/09 19:39
Binder是一种进程间通信机制,用来实现不同进程之间的通信。
Binder机制主要由四大块组成,分别是客户空间的client、server,serverManager,还有内核的Binder驱动。
下面我先看下图,利于理解Binder内部工作机制:
服务器端。一个Binder服务器端就是一个Binder类的对象。当创建一个Binder对象后,内部就会开启一个线程,这个线程用于接收binder驱
动发送的信息,收到消息后,会执行相关的服务代码。、
Binder驱动。当服务端成功创建一个Binder对象后,Binder驱动也会相应创建一个mRemote对象,该对象的类型也是Binder类。客户就可以
借助这个mRemote对象来访问远程服务。
客户端。客户端要想访问Binder的远程服务,就必须获取远程服务的Binder对象在binder驱动层对应的mRemote引用。当获取到mRemote对
象的引用后,就可以调用相应Binder对象的服务了。
在这里,我们可以看到,客户端是通过Binder驱动来调用服务端的相关服务。首先,在服务端创建一个Binder对象,然后相应在Binder驱动中创建一个Binder对象,接着客户端通过获取
Binder驱动中Binder对象的引用来调用服务端的服务。在Binder机制中正是借着Binder驱动将不同进程间的组件bind(粘连)在一起,实现通信。
为什么android官方推荐使用Binder机制?
从三个方面:可靠性、传输性、安全性
可靠性:
基于Client-Server的通信方式,系统不复杂,在资源有限的手机上,就显得非常可靠。
传输性能:强
Socket:传输效率低,开销大
消息队列和管道采用存储-转发方式:即数据先从发送方缓存区拷贝到内核开辟的一块缓存区中,然后从内核缓存区拷贝到接收方缓存区,其过程至少有两次拷贝
共享内存:无需拷贝,但控制复杂
综上,Binder机制是非常有效的
安全性:
由内核来添加可靠的UID,保证安全。
Bindler机制一个非常好的应用场景:
AIDL:
什么是AIDL?怎么用?
*AIDL:Android Interface definition Language 安卓接口定义语言
(1)作用:发布和调用远程服务,实现跨进程通信
(2)将服务的aidl放到对应的src文件夹中,工程的gen会产生对应的接口类
(3)通过bindservice方法绑定远程服务
(4)通过IBinder 获取到的对象,该对象既可以和我们的进程通信,又可以和远程进程通信,充当了中间通信的角色。
- Binder机制(非常好理解)
- Binder通信二(MediaService理解Binder机制)
- Binder机制简单理解
- 理解Binder RPC机制
- Android Binder机制理解
- Android Binder机制理解
- Android Binder机制理解
- 从mediaserver入手快速理解binder机制(最简单理解binder)
- android binder机制的理解
- 理解Android Binder机制原理
- 理解 Android 的 Binder 机制
- Binder机制(1)
- Binder机制(3)
- Binder机制(4)
- Binder机制(一)
- binder机制(上篇)
- Binder机制(中篇)
- Binder机制(下篇)
- 217. Contains Duplicate java
- 搜素框的制作
- LeetCode学习篇一——Counting Bits
- [LeetCode] 131. Palindrome Partitioning
- (转)解决VS2010链接错误:LINK : fatal error LNK1123: 转换到 COFF 期间失败: 文件无效或损坏
- Binder机制(非常好理解)
- Uva227 Puzzle 谜题 (java版本)
- eclipse maven+mybatis+web项目(一)
- Context——Context的使用
- PATB1028:人口普查
- 磁盘分区
- 新的开始
- Angular2学习笔记-环境搭建
- 51nod 1099 任务执行顺序