这一个过程在《android框架解密》中有细致的讲解。

binder中设计到的类如下图所示。

binder通讯过程

 

Binder服务中的类结构图

binder通讯过程

可以看到从RefBase中派生下来重要有三类,

- IBinder系,是Android中binder抽象数据结构,负责接收rpc数据和代码,生成binder节点。

-ProcessState系,是一些支持binder通信的类和数据结构。

- Interface接口,将服务转化程binder类型,具体的转化是由BpIngerface(转化代理类)和BnInterface(转化服务)来执行的。

binder与Interface之间的转换

服务接口->binder 是通过IInterface 的asBinder函数。

binder->服务接口 是通过服务接口的asInterface函数。

一个重要的概念

bpBinder和bnBinder是成对存在的,在ipc传输数据过程中,BpBinder的transAct()方法被调用,对应BnBinder的transact()方法也会调用。BnBinder在taransact()之后又会调用onTransact()方法,分析ipc数据,然后执行stub函数。

代理bpBinder如何生成的?

 

binder通讯过程

源头是从ServiceManager中获取得到服务binder。然后一步一步反向初始化,变成remote(代理服务)。

IPCThreadState主要是打开binder操作,传递,转化ipc数据。

相关文章:

  • 2022-12-23
  • 2022-12-23
  • 2021-11-24
  • 2021-06-30
  • 2022-12-23
  • 2022-12-23
  • 2022-02-01
  • 2021-12-15
猜你喜欢
  • 2021-04-25
  • 2021-12-22
  • 2021-08-28
  • 2021-07-20
  • 2021-05-25
  • 2021-03-31
  • 2021-12-20
相关资源
相似解决方案