Binder通信模型

    Binder是Android最主要的进程间通信方式,下面简单认识一下它的通信模型,如下图所示

    服务管理进程启动时会变成上下文管理者,在驱动层创建一个全局的binder_node对象binder_context_mgr_node记录进程信息,BpServiceManager中BpBinder的句柄为0,直接以binder_context_mgr_node作为目标,这就是一般进程可以直接与服务管理进程通信的原因。

    服务进程有一个BnDemoService类型的服务对象,继承于BBinder。为了使得客户进程与服务进程通信,服务进程需要向服务管理进程添加服务,添加的过程中在驱动层创建binder_node对象记录服务对象的信息,同时在服务管理进程创建binder_ref对象与服务进程的binder_node对象关联。最后服务的名称和binder_ref的句柄保存在服务管理进程。

    客户进程向服务管理进程查询是否有特定名称的服务,如果查询到服务,在返回结果的过程中,在客户进程也创建binder_ref对象,该对象同样与binder_node对象关联,binder_ref的句柄最终会保存到BpMyService的BpBinder中。

    客户进程查询服务后,客户进程的BpMyService与服务进程的BnDemoService建立了联系,客户进程就可以与服务进程通信了。

以上内容参考 《Android图形显示系统》作者 李先儒,,清华大学出版社

相关推荐

  1. Android Binder——APP中的Binder通信(十八)

    2024-04-09 00:14:02       10 阅读
  2. Android binder 匿名服务实现双向通信

    2024-04-09 00:14:02       13 阅读
  3. 【安卓跨进程通信IPC】-- Binder

    2024-04-09 00:14:02       9 阅读
  4. Android Binder 调用栈

    2024-04-09 00:14:02       31 阅读

最近更新

  1. TCP协议是安全的吗?

    2024-04-09 00:14:02       16 阅读
  2. 阿里云服务器执行yum,一直下载docker-ce-stable失败

    2024-04-09 00:14:02       16 阅读
  3. 【Python教程】压缩PDF文件大小

    2024-04-09 00:14:02       15 阅读
  4. 通过文章id递归查询所有评论(xml)

    2024-04-09 00:14:02       18 阅读

热门阅读

  1. 前端开发教程

    2024-04-09 00:14:02       15 阅读
  2. SpringBoot实现增删改查

    2024-04-09 00:14:02       12 阅读
  3. 复试专业课问题

    2024-04-09 00:14:02       13 阅读
  4. css外边距合并和BFC

    2024-04-09 00:14:02       12 阅读
  5. Leetcode 8. 字符串转换整数 (atoi)

    2024-04-09 00:14:02       12 阅读
  6. 蓝桥杯嵌入式之模块驱动

    2024-04-09 00:14:02       14 阅读
  7. 线程同步的四项原则

    2024-04-09 00:14:02       11 阅读
  8. 解决Redission的RList查询list数据过慢的问题

    2024-04-09 00:14:02       14 阅读
  9. 自动导入和注册在当前目录下的所有自定义指令

    2024-04-09 00:14:02       11 阅读
  10. meshgrid如何生成网格

    2024-04-09 00:14:02       10 阅读