本文基于 android10_r41 版本分析。
死亡通知的基本流程
死亡通知是为了让 Bp 端(客户端进程)能知晓 Bn 端(服务端进程)的生死情况,当 Bn 端进程死亡后能通知到 Bp 端。
分析源码之前,我们需要明确"死亡通知"实际是一个回调过程:
- 客户端,构造并保存好“死亡回调对象”,接着把“死亡回调对象”发送给驱动
- 驱动保存好“死亡回调对象”,同时记录好“死亡回调对象”对应的客户端和服务端
- 当服务端进程“挂掉”了,会执行进程的清理函数,清理函数会调用到 binder 驱动的清理函数,驱动清理函数会找到使用了服务端服务的客户端,把服务端死亡消息发送给客户端,客户端调用死亡通知回调