【Bluedroid】btif_av_sink_execute_service之服务器禁用源码流程解析
本文围绕 Bluedroid 蓝牙协议栈中音频接收端(Sink)服务的禁用流程展开,系统解析从 BTIF 层触发注销到 BTA 层状态机驱动、底层协议栈(AVDT/AVCT)解注册的完整链路。重点分析
DeregisterAllBtaHandles
触发 BTA 层消息分发、bta_av_api_deregister
启动流会话注销、bta_av_do_close
关闭音频流、bta_av_dereg_comp
清理资源及底层协议栈解注册等核心步骤,揭示蓝牙服务禁用过程中 “分层协作、状态机驱动、资源安全释放” 的设计逻辑。
一、概述
蓝牙音频接收端的服务禁用是资源管理的关键环节,涉及多模块协作:从 BTIF 层感知禁用事件并触发 BTA 层注销,到 BTA 层通过状态机驱动流会话关闭、清理 SDP 记录及连接,最终到底层协议栈(AVDT/AVCT)解注册,确保所有资源(如连接、定时器、缓冲区)彻底释放。流程核心目标是:避免资源泄漏、保持状态一致、保障协议交互可靠性。
1.1 触发阶段:BTIF 层发起注销
BTIF 层通过DeregisterAllBtaHandles
遍历维护的设备 ID 与 BTA 句柄映射表(peer_id2bta_handle_
),调用BTA_AvDeregister
触发 BTA 层注销流程,并清空映射表避免资源残留。