欢迎来到天天文库
浏览记录
ID:44702571
大小:101.25 KB
页数:5页
时间:2019-10-25
《Android平台网络连接架构分析_connectivityservice框架流程》由会员上传分享,免费在线阅读,更多相关内容在行业资料-天天文库。
1、Android平台网络连接架构解析2016-09李国辉ligh6@lenovo.com一概述截止到最新的7.0版本,android网络连接管理系统一直都由四个service组成, 分别是ConnectivityService,NetworkPolicyManagerService,NetworkManagementService,NetworkStatsService共同配合完成网络连接和管理功能,其中核心服务是ConnectivityService,而本文也会着重介绍该service的架构,四个service中NetworkPolicyManagerSe
2、rvice通过NetworkPolicyManager对外提供SDK接口,而ConnectivityService通过ConnectivityManager对外提供SDK接口,整体的框架图如下:1.ConnectivityService提供数据连接管理服务,负责管理Mobile,WIFI,BT,Ethernet几大类网络连接,同时提供VPN和Tethering服务。2.NetworkPolicyManagerService提供网络策略管理服务,NetworkPolicyManagerService维护网络使用策略,策略可以从一个策略文件读取(策略文件保存在
3、系统目录下的netpolicy.xml文件中)。也可以通过NetworkPolicyManager对外提供的设置策略接口(setNetworkPolicies及setUidPolicy)进行设置,NetworkPolicyManagerService能够根据这些设置或从策略文件中读取的策略控制网络连接。另外NetworkPolicyManagerService还具有动态调节网络连接限额及动态设置网络连接的功能,动态调节网络连接限额机制是通过INetworkStatsService访问NetworkStatsService服务获得上面设置或读取的策略匹配的网
4、络连接类型的传输统计信息(NetworkPolicyManagerService采用NetworkTemplate进行网络连接类型的匹配),并根据这些信息生成有效的规则,并提交给ConnectivityService服务,并调用NetworkManagementService的setInterfaceQuota函数对网络连接的带宽限额。3.NetworkStatsService提供网络传输数据流量统计服务,NetworkStatsService服务定期调用performPoll函数获得网络传输统计信息,performPoll函数通过调用NetworkMan
5、agementService服务的getNetworkStatsUidDetail、getNetworkStatsSummary及getNetworkStatsTethering函数从/proc/目录下的包含网络传输统计数据的文件中读取网络统计信息,并转换为NetworkStatsHistory数据结构,保存到以网络接口名称对应的NetworkIdentitySet类型和UID对应的UidStatsKey类型的变量为key的NetworkStatsService的三个HashMap变量中。然后根据performPoll传进来的参数标志信息(指示不同的PER
6、SIST方法)调用writeNetworkDevStatsLocked、writeNetworkXtStatsLocked、writeUidStatsLocked函数把HashMap变量中的统计信息分别写入系统目录下的三个相应的BIN文件(netstats.bin、netstats_xt.bin、netstats_uid.bin)中。4.NetworkManagementService提供对物理网络接口的管理服务,ConnectivityService、NetworkPolicyManagerService、NetworkStatsService三个服务都
7、通过INetworkManagementService接口跨进程访问NetworkManagementService服务,实现与系统底层网络物理接口的各类操作,比如设置IP路由表,限制流量,或者获取流量统计数据。二ConnectivityService框架及流程(一)整个Android的网络连接框架中,ConnectivityService是核心服务,实现对系统的所有数据连接进行管理,包括物理连接、虚拟连接以及共享连接。是ConnectivityManager的具体实现,实现了IConnectivityManager接口。在SystemServer的ini
8、t2中进行初始化,并增加到ServiceManager中。该服务在
此文档下载收益归作者所有