Android Binder

96
GordenNee
2017.09.06 13:52* 字数 267

理解Binder还是需要从AIDL入手,Aidl其实就是个封装好的Binder。

Binder 具体的流程:

  • 首先通过asInterface() 拿到代理对象Proxy,
  • 然后调用Proxy的add() 方法,add方法内部会调用BindProxy的 transact 方法,这个方法内部是c/c++代码,处理完毕后会回调本地对象Stub的onTranscat方法,在这个方法内部,会根据被调用方法来执行相应的逻辑,这里是this.add().并将结果作为reply返回。

类比:

Binder理解之ActivityManagerService

  • ActivityManagerNative 继承自Binder,实现IActivityManager接口,所以它其实是一个Binder本地对象。
  • ActivityManagerService 继承自ActivityManagerNative,他实现具体的方法。
  • ActivityManagerProxy 是一个代理类,因此它相当于是一个Binder代理对象。
  • ActivityManager 只是一个管理类,客户端通过它来进行相应的操作。它内部持有一个ActivityManagerProxy代理对象,因此可以通过这个代理对象完成跨进行通信。
Android 开发
Web note ad 1