图文浅析Binder机制

总述:

Binder是Android系统提供的一种IPC机制,Android系统基本就可以看做基于Binder的C/S架构,Binder也是C/S形式出现,它属于驱动但是驱动的一段内存而不是设备,框架如下图:

1、服务端接口

一个BIinder服务端实际是个BInder的类对象,一旦该对象创建,内部就会启动一个隐藏线程,该线程就会接受Binder驱动发送的消息,接收到消息之后就会执行BInder对象的onTransact()方法处理,过程如下图

2、Binder驱动

主要是牵涉到mRemote对象

3、客户端接口

要想访问远程服务,必须要获得远程服务在Binder对象中的mRemote引用,然后就可以调用其transact()方法(该方法经过重载)

最后用一张图来总结一下Binder整个过程:

版权声明:本文为博主原创文章,未经博主允许不得转载。

时间: 2024-07-31 10:21:41

图文浅析Binder机制的相关文章

安卓binder机制浅析

Binder机制是android系统中跨进程通信的重要手段.其中,Service与Activity的交互通信使用到了这一机制.为此,我写了service的小案例,以此来方便更好地理解binder通信机制. Service代码: public class MyService extends Service { public boolean flag=true; int count; //实例化一个binder ServiceBinder serviceBinder=new ServiceBinde

Android Binder机制浅析

Binder是Android上一种IPC机制,重要且较难理解.由于Linux上标准IPC在灵活和可靠性存在一定不足,Google基于OpenBinder的设计和构想实现了Binder. 本文只简单介绍其实现,并重点讨论Binder安全相关的内容.详细的Binder设计与实现分析,参考附录4篇文章. 一.Binder 实现 Android Binder由Client.Server.Service Manager和Binder驱动4个部件组成,下图引自网络. 在类UNIX系统中,进程是相互独立的,一

从源码角度分析Android中的Binder机制的前因后果

前面我也讲述过一篇文章<带你从零学习linux下的socket编程>,主要是从进程通信的角度开篇然后延伸到linux中的socket的开发.本篇文章依然是从进程通信的角度去分析下Android中的进程通信机制. 为什么在Android中使用binder通信机制? 众所周知linux中的进程通信有很多种方式,比如说管道.消息队列.socket机制等.socket我们再熟悉不过了,然而其作为一款通用的接口,通信开销大,数据传输效率低,主要用在跨网络间的进程间通信以及在本地的低速通信.消息队列和管道

android binder 机制二(client和普通server)

在讲它们之间的通信之前,我们先以MediaServer为例看看普通Server进程都在干些什么. int main() { -- // 获得ProcessState实例 sp<ProcessState> proc(ProcessState::self()); // 得到ServiceManager的Binder客户端实例 sp<IServiceManager> sm = defaultServiceManager(); -- // 通过ServiceManager的Binder客户

转 理解Android系统Binder机制

一.Binder机制概述 在Android开发中,很多时候我们需要用到进程间通信,所谓进程间通信,实现进程间通信的机制有很多种,比如说socket.pipe等,Android中进程间通信的方式主要有三种: 1.标准Linux Kernel IPC 接口: 2.标准D-BUS接口: 3.Binder接口. 其中,Binder机制是使用最且最被认可的,因为Binder机制有以下优点: 1.相对于其它IPC机制,Binder机制更加简洁和快速: 2.消耗的内存相对更少: 3.传统的IPC机制可能会增加

浅谈android binder机制

binder机制 是谷歌优化在android上更适合终端的IPC(多进程通信方式),满足系统对通信方式,传输性能和安全性的要求. 特性: 1. 用驱动程序来推进进程间的通信.2. 通过共享内存来提高性能.3. 进程间同步调用以及异步调用 ........................................... IADL是用binder机制进行IPC的典型代表 IADL是一个接口描述文件,规定IPC通信的接口,一般使用于client/server模式 c/s双方写好IADL后,系统会

Android系统Binder机制学习总结

一.Binder机制概述 在Android开发中,很多时候我们需要用到进程间通信,所谓进程间通信,实现进程间通信的机制有很多种,比如说socket.pipe等,Android中进程间通信的方式主要有三种: 1.标准Linux Kernel IPC 接口: 2.标准D-BUS接口: 3.Binder接口. 其中,Binder机制是使用最且最被认可的,因为Binder机制有以下优点: 1.相对于其它IPC机制,Binder机制更加简洁和快速: 2.消耗的内存相对更少: 3.传统的IPC机制可能会增加

android当中Binder机制,Looper与MessageQueue机制

上周四讨论内容:android 当中Binder机制,Looper与MessageQueue相关知识,相关链接: http://blog.csdn.net/innost/article/details/6124685 http://blog.csdn.net/innost/article/details/6055793 android当中Binder机制,Looper与MessageQueue机制,布布扣,bubuko.com

Android Binder机制分析(5) Binder_ioctl()分析

引言 在博客Android Binder机制(3)本地服务注册过程这篇博客中我们详细讲解了本地服务的注册过程,除了一个地方之外,那就是IPCThreadState::waitForResponse()方法中的talkWithDriver(),而在talkWithDriver()中调用了binder_ioctl(),由于内容太多,所以专门写一篇博客进行分析. 实际上,不只是在服务注册过程中会调用到Binder Driver中的binder_ioctl(),在服务检索.服务使用阶段都会调用到bind