Skip to content
阅读进度

AIDL 是怎么工作的 方法一定运行在主线程吗? ​

返回 Framework 与系统服务 目录

标准回答 ​

AIDL 根据接口定义生成 Stub、Proxy 和编解码代码,客户端与服务端依照相同契约跨进程调用。远程调用通常由服务进程的 Binder 线程执行,Service.onCreate 等组件生命周期在主线程执行,并不意味着 AIDL 方法也在主线程。同进程情况下,asInterface 可能直接返回本地实现,方法就在调用者线程执行。服务端如果要更新 View,应显式切换到 UI 线程;如果要执行耗时工作,应使用合适的工作线程并设计异步结果。

延伸追问 ​

远程回调接口也可能在客户端 Binder 线程执行,需要考虑线程安全和回调顺序。

内容来源 ​

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