聪明文档网

聪明文档网

最新最全的文档下载
当前位置: 首页> 正在进行安全检测...

正在进行安全检测...

时间:2023-11-13 08:43:52    下载该word文档
Android平台网络连接架构解析
2016-09李国辉
****************概述
截止到最新的7.0版本,android网络连接管理系统一直都由四个service组成,分别是ConnectivityServiceNetworkPolicyManagerServiceNetworkManagementServiceNetworkStatsService共同配合完成网络连接和管理功能,其中核心服务是ConnectivityService而本文也会着重介绍该service的架构,四个serviceNetworkPolicyManagerService通过NetworkPolicyManager对外提供SDK接口,而ConnectivityService通过ConnectivityManager对外提供SDK接口,整体的框架图如下:
MMS
GPS
SettingsConnectivityManagerNetworkPolicyManager
Connectivityservice
NetworkPolicyMana
gerService
NetworkStatsService
NetworkPolicyManage
rService
NativeDaemonConnect
or
NetdWIFIModem
BT
Kernel1.ConnectivityService提供数据连接管理服务,负责管理MobileWIFIBTEthernet几大类网络连接,同时提供VPNTethering服务。
2.NetworkPolicyManagerService提供网络策略管理服务,NetworkPolicyManagerService维护网络使用策略,策略可以从一个策略文件读取(策略文件保存在系统目录下的netpolicy.xml文件中)。也可以通过NetworkPolicyManager对外提供的设置策略接口(setNetworkPolicies
setUidPolicy进行设置,NetworkPolicyManagerService能够根据这些设置或从策略文件中读取的策略控制网络连接。另外NetworkPolicyManagerService还具有动态调节网络连接限额及动态设置网络连接的功能,动态调节网络连接限额机制是通过INetworkStatsService访问NetworkStatsService服务获得上面设置或读取的策略匹配的网络连接类型的传输统计信息NetworkPolicyManagerService采用NetworkTemplate进行网络连接类型的匹配)并根据这些信息生成有效的规则,并提交给ConnectivityService服务,并调用NetworkManagementServicesetInterfaceQuota函数对网络连接的带宽限额。
3.NetworkStatsService提供网络传输数据流量统计服务,NetworkStatsService服务定期调用performPoll函数获得网络传输统计信息,performPoll函数通过调用NetworkManagementService服务的getNetworkStatsUidDetailgetNetworkStatsSummarygetNetworkStatsTethering函数从/proc/目录下的包含网络传输统计数据的文件中读取网络统计信息,并转换为NetworkStatsHistory数据结构,保存到以网络接口名称对应的NetworkIdentitySet类型和UID对应的UidStatsKey类型的变量为keyNetworkStatsService的三个HashMap变量中。然后根据performPoll传进来的参数标志信息(指示不同的PERSIST方法)调用writeNetworkDevStatsLockedwriteNetworkXtStatsLockedwriteUidStatsLocked函数把HashMap变量中的统计信息分别写入系统目录下的三个相应的BIN文件netstats.binnetstats_xt.binnetstats_uid.bin)中。
4.NetworkManagementService提供对物理网络接口的管理服务,ConnectivityServiceNetworkPolicyManagerServiceNetworkStatsService三个服务都通过INetworkManagementService接口跨进程访问NetworkManagementService服务,实现与系统底层网络物理接口的各类操作,比如设置IP路由表,限制流量,或者获取流量统计数据。ConnectivityService框架及流程
(一)整个Android的网络连接框架中,ConnectivityService是核心服务,实现对系统的所有数据连接进行管理,包括物理连接、虚拟连接以及共享连接。是ConnectivityManager的具体实现,实现了IConnectivityManager接口。在SystemServerinit2中进行初始化,并增加ServiceManager中。该服务在SystemServer.java中随开机而启动:
try{
log.i(TAG,"ConnectivityService";
connectivity=newConnectivityService(context,networkManagement,networkStats,networkPolicy;ServiceManager.addService(Context.CONNECTIVITY_SERVICE,connectivity;networkStats.bindConnectivityManager(connectivity;networkPolicy.bindConnectivityManager(connectivity;
}catch(Throwablee{reportWtf("startingConnectivityService",e;}ConnectivityService服务通过NetworkAgent类和NetworkFactory类对象进行底层物理连接的管理。它主要提供以下几类服务:

1.监视网络连接状态,从中获取网络信息,包括(Wi-Fi,GPRS,UMTS,etc2.当网络状态改变时发送广播通知3.当网络连接失败尝试连接其他网络
4.提供API让应用程序获取可用的网络状态5.通过Tethering对象提供网络连接共享服务6.通过Vpn对象提供VPN连接服务。

免费下载 Word文档免费下载: 正在进行安全检测...

  • 29.8

    ¥45 每天只需1.0元
    1个月 推荐
  • 9.9

    ¥15
    1天
  • 59.8

    ¥90
    3个月

选择支付方式

  • 微信付款
郑重提醒:支付后,系统自动为您完成注册

请使用微信扫码支付(元)

订单号:
支付后,系统自动为您完成注册
遇到问题请联系 在线客服

常用手机号:
用于找回密码
图片验证码:
看不清?点击更换
短信验证码:
新密码:
 
绑定后可用手机号登录
请不要关闭本页面,支付完成后请点击【支付完成】按钮
遇到问题请联系 在线客服