Android Telephony 框架与横向支撑层
引言
Android Telephony并非独立封闭模块,而是与ConnectivityService、Tethering等深度耦合的横向支撑层。
Q:为什么叫横向支撑层?Telephony、ConnectivityService、Tethering 不是上下层级关系吗?
A:在 Android 系统中,Telephony、ConnectivityService 和 Tethering 等服务虽然处于架构的同一层级(应用框架层),但因其跨模块协同工作的特性,被称为“横向支撑层”。这种命名强调它们横向贯穿多个垂直功能模块(如网络连接、数据共享、通话管理),而非仅作为上下层级中的简单中间层。
原因:
-
功能跨域协同
- Telephony 专注蜂窝技术,Tethering 专注共享,ConnectivityService 横向整合两者实现端到端功能。
- 例如:手机热点的数据需穿透 Telephony(底层)、Connectivity(路由)、Tethering(转发)三层服务。
-
动态调度取代静态层级
- ConnectivityService 的 NetworkFactory 机制动态注册各网络能力(Telephony/Wi-Fi),实时评分选择最优网络,而非固定层级调用。
-
解耦与复用
- Telephony 不直接处理热点共享逻辑,仅提供数据连接,由 Tethering 复用该连接,通过横向协作降低耦合。
💎 总结
Telephony、ConnectivityService 和 Tethering 的“横向支撑”本质是功能耦合关系,它们在架构层级中并列,但通过动态交互形成跨域业务闭环。这种设计既隔离了技术复杂性(如 Modem 交互),又实现了灵活协同(如网络切换/共享),是 Android 网络架构的核心设计思想。
架构介绍
1. 层级关系(纵向)
从 Android 分层架构看,这些服务属于应用框架层(Application Framework),位于应用层和 HAL 层之间:
应用层 (Apps)
└── 框架层 (Framework)
├── Telephony Service // 管理蜂窝网络(通话/短信/数据)
├── ConnectivityService // 协调多网络类