NetworkAgent和NetworkFactory

ConnectivityManager和ConnectivityService讲解

主要作用

  1. 监听网络连接(WiFi, Cellular等)

通过NetworkAgent监听网络连接的变化。NetworkAgent是Bearer和ConnectivityService沟通的桥梁,Bearer通过NetworkAgent将网络信息更新到ConnectivityService中;ConnectivityService通过NetworkAgent给Bearer发送一些控制类的消息等

  1. 当网络连接发生变化时发送广播通知监听者

发送的广播主要是ConnectivityManager.CONNECTIVITY_ACTION:android.net.conn.CONNECTIVITY_CHANGE

  1. 当一个网络的连接断开时,尝试打开另外一个网络连接

当NetworkAgent断开/去注册的时候,会rematch network 和 network request,新的network会建立

  1. 为应用程序查询可用网络状态提供接口

反馈信息最详细的接口是getAllNetworkState,而getAllNetworks,getActiveNetwork相比较算是反馈信息比较粗略的

  1. 为需要数据业务的应用程序提供请求和选择网络的接口

供应用程序请求网络连接的API是requestNetwork(…)系列,针对不同的应用需求,同名方法有六个

NetworkFactory

主要处理NetworkRequest相关

每个Bearer(cellular, wifi等)都会创建NetworkFactory用来接收ConnectivityService发出来的”scored NetworkRequests”, 所以NetworkFactory会有很多,比如TelephonyNetworkFactory, WifiNetworkFactory和PhoneSwitcher.PhoneSwitcherNetworkRequestListener等

1.将当前网络注册到ConnectivityService;
2.处理网络请求,用于打开或者释放当前连;
3.更新当前网络的分值

NetworkAgent

Bearer和ConnectivityService通信的通道

NetworkAgent是Bearer(cellular,wifi)和ConnectivityService通信的通道,所以会有很多的NetworkAgent,DataConnection.DcNetworkAgent和WifiStateMachine.WifiNetworkAgent等, NetworkAgent是和network对应的,所以如果一个Bearer可以同时支持不同的network((IMS / Internet / MMS Apns on cellular, or perhaps connections with different SSID or P2P for Wi-Fi),那么它可以拥有多个NetworkAgent。作为通信通道,只有那些成功建立通道的NetworkAgent才会在ConnectivityService中保存,那些断开了通道的NetworkAgent会从ConnectivityService中删掉
1.利用NetworkFactory做网络请求是单向的,而NetworkAgent可进行双向通信(如,在EthernetNetworkFactory中的updateAgent);
2.通知ConnectivityService网络状态的变化;

举例总结

发彩信过程中使用mms APN的流程

发彩信需要使用MMS APN,MmsNetworkManager.acquireNetwork会调用ConnectivityManager.requesetNetwork方法请求网络连接;network request会发送到TelephonyNetworkFactory中,TelephonyNetworkFactory会调用DcTracker.requestNetwork,在这个方法中选择合适的ApnContext(MMS),然后开始建立网络连接。
IMS模块通过ConnectivityManger.requestNetwork(…)方法请求使用IMS apn建立data connection

  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值