Skip to content
阅读进度

IPC、Binder、AIDL 是什么关系? ​

返回 Framework 与系统服务 目录

标准回答 ​

IPC 是进程间通信的总称;Binder 是 Android 常用的 IPC 机制;AIDL 用来描述接口,并生成 Binder 代理和服务端分发代码。Parcel 负责传输数据的编解码。

关键机制 ​

  • 典型路径:客户端 Proxy → Binder 驱动 → 服务端 Stub → 业务实现,再把结果返回调用方。
  • 远程同步调用会阻塞调用线程;服务端远程 AIDL 调用通常由 Binder 线程池处理,要考虑并发和线程安全。
  • 同进程调用可能直接在调用者线程执行。传复杂对象要符合接口约定;Parcelable 对象不是把原内存对象跨进程共享。

通俗例子 ​

主线程调用远程 getDeviceStatus,服务端又等硬件 300ms,页面也会被拖住。应避免在主线程进行不可控的同步调用,并设计异步状态回调。

易混淆点 ​

oneway 使远程调用无需等业务返回,但不会消除服务端耗时和队列堆积;本地调用也不因此自动异步。

参考资料 ​

内容来源 ​

用完整回答理解机制,用真实证据解释项目。