android 连接管理,android系统 连接管理总结

连接管理功能包括 wifi ethernet cable bluetooth tethering ap mobile的连接和切换,状态和数据统计,是一个复杂的模块。

在framework层,通常来说主要如下:

ANDROID 系统网络连接和管理服务由四个系统服务ConnectivityService、NetworkPolicyManagerService、NetworkManagementService、NetworkStatsService共同配合完成网络连接和管理功能,四个服务只有ConnectivityService、NetworkPolicyManagerService两个服务通过NetworkPolicyManager、ConnectivityManager两个客户端对象对应用程序提供对外SDK接口,而NetworkManagementService、NetworkStatsService没有对外提供SDK接口,但设置应用程序可以通过获取系统服务接口使用NetworkManagementService、NetworkStatsService服务.

框架详细介绍:

http://old.uplook.cn/index.php?a=index&m=Index&c=show&id=240006&

这里

结合底层服务netd的部分

http://blog.csdn.net/xiaokeweng/article/details/8130218

总结:

netd服务是主要控制pppd,tethering,softap,dns,route控制。它通过netlink与kernel通信。上层是通过socket与framework通信。

ethernet 子系统:

http://blog.csdn.net/martingang/article/details/8170950

wifi子系统:

http://blog.csdn.net/seker_xinjian/article/details/6254609

NOte: 在android4.0上面,Wifimonitor监听wpa的消息然后 WifiStateMachine的接口最后发广播,WifiStateTracker会收到广播然后用connectivityservice的handler发送消息给ConnectivityService

WifiStateMachine.java

1563     private void sendNetworkStateChangeBroadcast(String bssid) {

1564         Intent intent = new Intent(WifiManager.NETWORK_STATE_CHANGED_ACTION);

1565         intent.addFlags(Intent.FLAG_RECEIVER_REGISTERED_ONLY_BEFORE_BOOT

1566                 | Intent.FLAG_RECEIVER_REPLACE_PENDING);

1567         intent.putExtra(WifiManager.EXTRA_NETWORK_INFO, mNetworkInfo);

1568         intent.putExtra(WifiManager.EXTRA_LINK_PROPERTIES, new LinkProperties (mLinkProperties));

1569         if (bssid != null)

1570             intent.putExtra(WifiManager.EXTRA_BSSID, bssid);

1571         if (mNetworkInfo.getState() == NetworkInfo.State.CONNECTED)

1572             intent.putExtra(WifiManager.EXTRA_WIFI_INFO, new WifiInfo(mWifiInfo));

1573         mContext.sendStickyBroadcast(intent);

1574     }

WifiStateMachine.java

224              } else if (intent.getAction().equals(WifiManager.NETWORK_STATE_CHANGED_ACTION)) {

225                 mNetworkInfo = (NetworkInfo) intent.getParcelableExtra(

226                         WifiManager.EXTRA_NETWORK_INFO);

227                 mLinkProperties = intent.getParcelableExtra(

228                         WifiManager.EXTRA_LINK_PROPERTIES);

229                 if (mLinkProperties == null) {

230                     mLinkProperties = new LinkProperties();

231                 }

232                 mLinkCapabilities = intent.getParcelableExtra(

233                         WifiManager.EXTRA_LINK_CAPABILITIES);

234                 if (mLinkCapabilities == null) {

235                     mLinkCapabilities = new LinkCapabilities();

236                 }

237                 // don't want to send redundent state messages

238                 // TODO can this be fixed in WifiStateMachine?

239                 NetworkInfo.State state = mNetworkInfo.getState();

240                 if (mLastState == state) {

241                     return;

242                 } else {

243                     mLastState = state;

244                 }

245                 Message msg = mCsHandler.obtainMessage(EVENT_STATE_CHANGED,

246                         new NetworkInfo(mNetworkInfo));

247                 msg.sendToTarget();

TrafficStats.java

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值