浅谈android binder机制
binder机制 是谷歌优化在android上更适合终端的IPC(多进程通信方式),满足系统对通信方式,传输性能和安全性的要求。
特性:
1. 用驱动程序来推进进程间的通信。
2. 通过共享内存来提高性能。
3. 进程间同步调用以及异步调用
...........................................
IADL是用binder机制进行IPC的典型代表
IADL是一个接口描述文件,规定IPC通信的接口,一般使用于client/server模式
c/s双方写好IADL后,系统会生成一个继承binder以及实现这个接口的类---Stub
XXXInterface.Stub extend binder implement XXXInterface
server方:
可以通过Stub类,实现接口功能,向client提供接口相关的服务
client方:
通过server提供的binder,来使用服务。
client/server是如何通过binder进行通信的呢?
我们可以看到Stub提供了3个重要的方法,以及远程binder Proxy类。
asInterface(Ibinder obj)
transaction(...)
ontransaction(...)
client通过asInterface(binder) 这个方法,把server提供的binder 生成 binder Proxy对象
通过 transaction()来与远程binder对象进行通信。
到底如何实现通信呢?
首先把数据存入Parcel中,通过binder文件驱动通知,通过Ashmen内存共享通信
具体如何做的,以后有时间在讲。
server通过 ontransaction()方法,把处理结果返回给client。