Binder 简述

发布时间:2026/10/30 1:39:30
Binder 简述 BinderBinder使用ClientServer(c/s架构)通信方式。Binder框架定义了四个角色Server,Client,ServiceManager以及Binder驱动。其中Server,Client,ServiceManager运行于用户空间驱动运行于内核空间。ServiceManager负责把Binder Server注册到一个容器中。通过代理对象通信Binder代理对象 Binder引用对象 Binder实体对象 Binder本地对象AIDLAndroid Interface Definition Language Android接口定义语言Android提供的一种Binder实现。线程池主线程是由 Zygote母体生成的线程池首次创建第一个Binder线程A然后监听BR_SPAWN_LOOPER事件收到后创建第二个Binder线程B线程B继续监听BR_SPAWN_LOOPER事件收到后创建第三个Binder线程C。总共创建3个Bindr线程这是Binder协议决定。根据系统处理器数目以及应用程序的负载强度线程池的线程数目可以动态调整这是Binder优化需要考虑的。Service Manager是整个Binder通信机制的大管家是Android进程间通信机制Binder的守护进程管理Binder机制Client端和Server端通信时都需要先获取Service Manager接口才能开始通信服务。所有系统服务都需要在ServiceManager类中进行注册服务注册、获取和访问过程通信BpBinder发送端根据handler在当前binder_proc中找到相应的binder_ref由binder_ref再找到目标binder_node实体由目标binder_node再找到目标进程binder_proc销毁在应用进程创建的过程中有一个attachApplicationLocked方法的过程中便会创建死亡通知。当binder服务端挂了之后便会通过binder的DeathRecipient来通知AMS进行相应的清理收尾工作。当该进程会杀则会回调到binderDied()方法。Crash进程中拥有一个Binder服务端ApplicationThread而应用进程在创建过程调用attachApplicationLocked()从而attach到system_server进程在system_server进程内有一个ApplicationThreadProxy这是相对应的Binder客户端当Binder服务端ApplicationThread所在进程(即Crash进程)挂掉后则Binder客户端能收到相应的死亡通知从而进入binderDied流程。进程异常退出的时候内核保证会释放未正常关闭的它打开的/dev/binder文件即调用与/dev/binder文件所关联的release回调函数进而执行清理工作BBinder死亡通知机制Client进程从Binder驱动获得一个BpBinderClient进程向Binder驱动注册一个死亡通知该死亡通知与上述BpBinder所引用的BBinder相关联Binder驱动监控到BBinder所在进程异常退出的时候检查该BBinder是否注册有死亡通知Binder驱动向注册的死亡通知所关联的BpBinder所运行在的Client进程发送通知Client进程执行相应的清理工作

关于本文作者

来自尧图内容编辑团队

尧图内容编辑团队 内容团队

尧图内容编辑团队

本文由尧图网络内容编辑团队执笔。团队由资深项目经理、前端工程师与设计师组成,所有内容均来自亲手交付的真实项目,先讲清问题、再给出可落地的解法。尧图深耕北京网站建设十年,服务过京华建材集团、智造科技等各行业客户,把一线经验沉淀为可复用的行业观察。

  • 十年建站经验,覆盖建材、制造、服务、文创等
  • 项目经理把关选题与事实准确性
  • 工程师与设计师联合撰写专业细节
  • 统一编辑规范,保证文风与排版一致
  • 每月复盘转化数据,迭代选题方向

延伸阅读

相关资讯与近期热门内容

深度阅读推荐

建站决策前值得细读的三篇

网站改版的5个关键决策
2024-08-12

网站改版的5个关键决策

什么时候该改版、改到什么程度、如何避免流量掉光,京华建材集团改版复盘给出答案。

获取专属建站方案

看完文章,把您的行业与预算告诉我们,免费获取一份量身定制的官网建设方案与报价。

立即免费咨询