Binder机制(非常好理解)

Binder机制(非常好理解)Binder是一种进程间通信机制,用来实现不同进程之间的通信。Binder机制主要由四大块组成,分别是客户空间的client、server,serverManager,还有内核的Binder驱动。下面我先看下图,利于理解Binder内部工作机制:服务器端。一个Binder服务器端就是一个Binder类的对象。当创建一个Binder对象后,内部就会开启一个线程,这个线程用…

Binder是一种进程间通信机,用来实现不同进程之间的通信。

Binder机制主要由四大块组成,分别是客户空间的client、server,serverManager,还有内核的Binder驱动。

下面我先看下图,利于理解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 获取到的对象,该对象既可以和我们的进程通信,又可以和远程进程通信,充当了中间通信的角色。

版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 举报,一经查实,本站将立刻删除。
如需转载请保留出处:https://bianchenghao.cn/36303.html

(0)
编程小号编程小号

相关推荐

发表回复

您的电子邮箱地址不会被公开。 必填项已用*标注