Data Connection (数据连接) 架构设计
description: “移动数据连接 (Data Connection) 与 PDN 会话架构设计,深入剖析 DataNetwork 状态机、数据可用性评估引擎、重试退避算法、以及跨 APN 的并发管理策略。”当手机完成网络注册(ServiceStateTracker 确定已注册到运营商网络)后,用户最关心的一件事就是:能不能上网?数据连接模块负责在两端的设备之间建立基于 IP 的 PDN (Packet Data Network) 连接。在 Android 16 中,Google 对数据连接架构进行了大规模重构,引入了DataNetworkController + DataNetwork 双层架构,取代了老版本的DataConnection/DcTracker体系。设计理念: Android 16 的数据连接架构从老版本的"APN 类型为中心"彻底转变为"NetworkRequest 驱动"模式。每个DataNetwork是一个独立的 PDN 会话(对应一个物理 IP 接口),DataNetworkController作为中央协调器,管理多个DataNetwork的生命周期。这一重构的核心思想是通过组合复用而非继承扩展——每个DataNetwork都自包含完整的状态机,而DataNetworkController只做调度和仲裁。1. 核心职责数据连接模块负责:PDN 会话建立与拆除:发起setupDataCall到 Modem,获取 IP 地址并建立路由数据可用性评估 (Data Evaluation):综合判断当前是否允许建立数据连接(如是否开启移动数据、是否在漫游、是否飞行模式等)重试与退避 (Retry Backoff):数据连接失败后的智能重试,指数退避避免信令风暴切换 (Handover):数据连接在不同 RAT 之间的无缝切换(如 LTE → 5G 或 IWLAN ↔ WWAN)APN 管理:根据当前 RAT、漫游状态选择合适的 APN 配置2. 核心类与源码锚点 (Source Code Anchors)[DataNetworkController.java](file:///d:/Resource/Android%2016/android-16/frameworks/opt/telephony/src/java/com/android/internal/telephony/data/DataNetworkController.java):中央控制器(超过 4000 行)。每个 SIM 卡一个实例,负责管理所有DataNetwork,受理 App 层的网络请求并进行数据可用性评估。[DataNetwork.java](file:///d:/Resource/Android%2016/android-16/frameworks/opt/telephony/src/java/com/android/internal/telephony/data/DataNetwork.java):单一 PDN 会话的状态机(超过 4000 行)。核心状态:Connecting → Connected → Disconnecting → Disconnected,同时支持Handover状态进行跨 RAT 切换。[DataProfileManager.java](file:///d:/Resource/Android%2016/android-16/frameworks/opt/telephony/src/java/com/android/internal/telephony/data/DataProfileManager.java):DataProfile / APN 管理器。负责从TelephonyProvider数据库中查询 APN 配置。[DataRetryManager.java](file:///d:/Resource/Android%2016/android-16/frameworks/opt/telephony/src/java/com/android/internal/telephony/data/DataRetryManager.java):重试管理器(超过 1100 行)。实现指数退避、限流(Throttling)等多种重试策略。[DataServiceManager.java](file:///d:/Resource/Android%2016/android-16/frameworks/opt/telephony/src/java/com/android/internal/telephony/data/DataServiceManager.java):底层数据传输服务(IDataService)管理器,负责与TelephonyDataService(HAL 层) 交互。[DataConfigManager.java](file:///d:/Resource/Android%2016/android-16/frameworks/opt/telephony/src/java/com/android/internal/telephony/data/DataConfigManager.java):数据连接配置管理器,管理如anomalyNetworkConnectingTimeout等超时参数。3. Google 设计技巧深入分析3.1 DataNetwork 状态机 — 每个 PDN 会话自包含DataNetwork是每个 PDN 会话的完整状态机实现,继承自 Android 框架的StateMachine:源码 [DataNetwork.java](file:///d:/Resource/Android%2016/android-16/frameworks/opt/telephony/src/java/com/android/internal/telephony/data/DataNetwork.java#L171) 中:publicclassDataNetworkextendsStateMachine{privatefinalConnectingStatemConnectingState=newConnectingState();privatefinalConnectedStatemConnectedState=newConnectedState();privatefinalDisconnectingStatemDisconnectingState=newDisconnectingState();privatefinalDisconnectedStatemDisconnectedState=newDisconnectedState();privatefinalHandoverStatemHandoverState=newHandoverState();}setupDataCall 成功setupDataCall 失败 / 超时跨 RAT 切换触发tearDown 请求Handover 完成Handover 失败deactivateDataCall 完成ConnectingConnectedDisconnectedHandoverDisconnecting
本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/2631836.html
如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!