通信方式android系统,android系统通信方式binder详解

###############################android系统通信方式binder详解@Linux系统进程间通信有哪些方式? 1.socket;2.name pipe命名管道;3.message queue消息队列;4.singal信号量;5.share memory共享内存;@Java系统的通信方式是什么?1.socket;2.name pipe;####Android系统通信方式是什么?#####Binder 通信;binder是高效率的、同步,而不是异步。Binder通信是通过linux的binder driver来实现的,Binder通信操作类似线程迁移(thread migration),两个进程间IPC看起来就象是一个进程进入另一个进程执行代码然后带着执行的结果返回;Binder的用户空间为每一个进程维护着一个可用的线程池,线程池用于处理到来的IPC以及执行进程本地消息,Android中的Binder通信是基于Service与Client的工作模型的;所有需要IBinder通信的进程都必须创建一个IBinder接口;对用户程序来说,我们也要创建server,或者Service用于进程间通信;ActivityManagerService管理JAVA应用层;所有的service创建与连接(connect),disconnect 所有的Activity也是通过这个service来启动,加载的; ActivityManagerService也是加载在Systems Servcie中的; ######Android的 Service工作流程##############Android虚拟机启动之前系统会先启动service Manager进程; service Manager打开binder驱动,并通知binder kernel驱动程序这个进程将作为System Service Manager; 然后该进程将进入一个循环,等待处理来自其他进程的数据。 用户创建一个System service后,通过defaultServiceManager得到一个远程ServiceManager的接口,通过这个接口我们可以调用addService函数将System service添加到Service Manager进程中; 然后client可以通过getService获取到需要连接的目的Service的IBinder对象,这个IBinder是Service的BBinder在binder kernel的一个参考, 所以service IBinder 在binder kernel中不会存在相同的两个IBinder对象,每一个Client进程同样需要打开Binder驱动程序。对用户程序而言,我们获得这个对象就可以通过binder kernel访问service对象中的方法。 Client与Service在不同的进程中,通过这种方式实现了类似线程间的迁移的通信方式,对用户程序而言当调用Service返回的IBinder接口后,访问Service中的方法就如同调用自己的函数。

阅读(1554) | 评论(0) | 转发(0) |

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值