Binder学习笔记-1

2018-07-02  本文已影响0人  sjandroid

基础知识


Binder是什么?

1:通常意义下,Binder指的是一种通信机制;我们说AIDL使用Binder进行通信,指的就是Binder这种IPC机制
2:对于Server进程来说,Binder指的是Binder本地对象
3:对于Client来说,Binder指的是Binder代理对象,它只是Binder本地对象的一个远程代理;对这个Binder代理对象的操作,会通过驱动最终转发到Binder本地对象上去完成;对于一个拥有Binder对象的使用者而言,它无须关心这是一个Binder代理对象还是Binder本地对象;对于代理对象的操作和对本地对象的操作对它来说没有区别。
4:对于传输过程而言,Binder是可以进行跨进程传递的对象;Binder驱动会对具有跨进程传递能力的对象做特殊处理:自动完成代理对象和本地对象的转换。


Binder相较于 其它的方式有哪些优势?

微信图片_20180702172341.png

Binder通信原理是怎么样的,怎么通信的?

  1. Server端进程向 ServiceManager注册,告诉它我是干嘛的,我具备什么能力。
  2. Client端进程通过Binder驱动向ServiceManager发出消息,说我想要调用Server进程的某一个方法获取数据。
  3. ServiceManager通过查找它所维护的所有Server进程信息,找到Cliecnt想要访问的那个Server端,并告诉相应的Server端执行XX方法并把返回值告诉我。
  4. 等Server执行方法完毕并把结果返回给ServiceManager之后,ServiceManager再通过Binder驱动把数据返回给Cliecnt进程。

参考链接:
http://weishu.me/2016/01/12/binder-index-for-newer/

上一篇下一篇

猜你喜欢

热点阅读