Android手机系统数据连接核心类-java层说明

 1.DataConnectionTracker.

   DataConnectionTracker 就是一个 Handler ,处理与数据连接相关的各种消息,是数据连接的核心类,也就是发起数据连接以及处理数据连接状态的主体类,主要工作如下:
   <1>做数据连接的前期准备工作,如检查apn,DataConnectionAc,等。
   <2>初始化DataConnection,DataConnectionAc
   <3>通过DataConnectionAc,将数据连接的命令,发送给DataConnection   
   <4>DataConnection通过自己的状态机,将网络状态进行切换。
   <5> 通知NetworkStateTracker,数据连接已经发生变化(连接,断开,正在连接等状态)。
 主要有GsmDataConnectionTracker 和 CdmaDataConnectionTracker 

 2.DataConnection

   描述具体的数据连接,将数据连接的命令,通过RIL的封装,发送给RIL层,它是一个状态机,可以完成网络状态切换的工作,主要有GsmDataConnection 等实现类。

 3.NetworkStateTracker

   NetworkStateTracker 接收 DataConnectionTracker通过DefaultPhoneNotifier发出的广播,如连接成功,连接失败等。主要有MobileDataStateTracker等实现类,处理相关广播后,将网络状态变化的消息发送给ConnectivityService 去处理。

 4.ConnectivityService

   ConnectivityService 通过接收NetworkTracker 发送的消息,来知道网络连接的状况,处理连接,断开,正在连接,正在断开等动作。
   以移动网络连接为例。
   ConnectivityService 在SystemServer 进程中创建,phone 对象是在Phone进程中创建,SystemServer进程在Phone应用之前创建。GSMPhone 创建 GsmDataConnectionTracker,GsmDataConnectionTracker创建GsmDataConnection.GsmPhone 创建DefaultPhoneNotifier,这个DefaultPhoneNotifier主要将 GsmDataConnectionTracker 的数据连接状态变化的消息以广播的消息发送出去。
   ConnectionService 创建了MobileDataStateTracker,并且监听 MobileDataStateTracker的与网络状态相关的消息。MobileDataStateTracker 注册了一个内部Receiver
   
        IntentFilter filter = new IntentFilter();
        filter.addAction(TelephonyIntents.ACTION_ANY_DATA_CONNECTION_STATE_CHANGED);
        filter.addAction(TelephonyIntents.ACTION_DATA_CONNECTION_FAILED);
        filter.addAction(DataConnectionTracker.ACTION_DATA_CONNECTION_TRACKER_MESSENGER);

        mContext.registerReceiver(new MobileDataStateReceiver(), filter);
        mMobileDataState = Phone.DataState.DISCONNECTED;

       ACTION_ANY_DATA_CONNECTION_STATE_CHANGED,当 GsmDataConnectionTracker 检测到网络状态发生变化时,就通过DefaultPhoneNotifier,把这个Action 发送出去,
       MobileDataStateTracker将消息处理后,告诉ConnectivityService 现在的网络状态。
       ACTION_DATA_CONNECTION_FAILED,当GsmDataConnectionTracker 检测到网络状态连接失败时,就通过DefaultPhoneNotifier,把这个Action 发送出去,
       MobileDataStateTracker将消息处理后,告诉ConnectivityService 现在的网络状态。
       ACTION_DATA_CONNECTION_TRACKER_MESSENGER,当GsmDataConnectionTracker 在GSMPhone 中初始化时,其构造函数,就会发送该Action,MobileDataStateTracker,接收该Action后,新建了一个 AsyncChannel,这个AsynChannel 就是MobileDataStateTracker 和GsmDataConnectionTracker 之间进行数据通信的通道,比如 MobileDataStateTracker的 setUserDataEnable,
   public void setUserDataEnable(boolean enabled) {
        if (DBG) log("setUserDataEnable: E enabled=" + enabled);
        final AsyncChannel channel = mDataConnectionTrackerAc;
        if (channel != null) {
            channel.sendMessage(CMD_SET_USER_DATA_ENABLE, enabled ? ENABLED : DISABLED);
            mUserDataEnabled = enabled;
        }
        if (VDBG) log("setUserDataEnable: X enabled=" + enabled);
    }


       channel 就是之前新建的AsyncChannel,将数据连接的任务交给 GsmDataConnectionTracker.
       ConnectivityService 接收到 MobileDataStateTracker发送的消息后,就开始处理连接状态的变化的工作,如handleDisconnected.
  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值