SettingsCarPropertyManager 源码解析
本目录是对
SettingsCarPropertyManager的系统性源码梳理,多流程图、多视角。 梳理日期:2026-07-07 | 仓库:MiCarSettings | 分支:dev
这是什么
SettingsCarPropertyManager 是 MiCar Settings 应用读写车辆信号的统一入口,对 AOSP Car / CarPropertyManager 的二次封装。被 82 个文件引用,是车辆设置(灯光、车门、驾驶模式、充电……)的地基。
业务 Controller (CarPropertyMgrPreferenceController)
↓ setCarManagerCallback(CarPropertyManagerCallback)
SettingsCarPropertyManager ← 本目录解析的对象
↓ 委托
VehicleControlManager ← 屏蔽 dcd/xcd 平台差异
↓
AOSP Car / CarPropertyManager
文档导航
| 文档 | 内容 | 主要图表 |
|---|---|---|
| 01-总览与使用方.md | 职责定位、核心能力、API 清单、谁在用、怎么用 | 架构分层图、使用分布表 |
| 02-依赖关系图.md | 它依赖的 8 个核心类各自干什么 | mermaid classDiagram |
| 03-读写信号全链路时序图.md | 读/写信号从 Controller 到车端的完整链路 | 2 张 mermaid sequenceDiagram |
| 04-超时监控与回调机制.md | 超时状态机、回调双层结构、缓存策略 | mermaid stateDiagram + flowchart |
源码位置
base/settingsVehicleLib/src/main/java/com/android/car/settings/miauto/vehicle/SettingsCarPropertyManager.kt (693 行)
核心结论速记
- 不是单例——每个 Controller
new一个,绑定Lifecycle自动release()。 - 读写都过它——业务永远不直接碰 AOSP Car,绕过它等于裸跑(无缓存、无超时、无异常兜底)。
- 自动注册 callback——
getProperty一次后,该信号的变化会被自动监听(记到mNoNeedObservedPropertyIdSet)。 - 超时监控是核心增值——下发后启动
Handler延时计时,回弹后按CarPropertyTimeoutFlag(CONTINUE/RESTART/REMOVE)决策,真超时则onSetPropertyTimeout+ 数据校验onDataVerifyFailed。 - 缓存 key =
propId#areaId——首次缓存可由VehiclePropertyConfig.getPropValueForFirstCache注入”初始终态值”供 UI 展示。
相关业务知识库见
../座舱车门知识库/,其中有基于本类的车门场景实战(JIRA 1838/1839)。