数据连接核心类(java层)
来源:互联网 发布:网络电视安装直播软件 编辑:程序博客网 时间:2024/05/01 18:10
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 去处理。
3.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.
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 去处理。
3.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.
- 数据连接核心类(java层)
- 数据连接核心类(java层)
- Android手机系统数据连接核心类-java层说明
- Java连接数据库<数据访问层>
- 数据访问层(连接数据库)
- 数据连接层源码
- java连接数据库核心代码
- JAVA核心层--反射--动态代理
- JAVA核心层--反射--动态代理
- JAVA核心层--反射--动态代理
- SpringMVC核心类之处理注解URL核心类,文件上传核心类的用法和SpringMVC和service层的连接
- java数据访问层(jdbc,jndi)
- 【JAVA】数据访问层
- 三层网络结构(核心层 汇聚层 接入层)
- 三层网络结构(核心层、汇聚层 、接入层)
- 核心层(网络的高速交换主干)、汇聚层(提供基于策略的连接)、接入层 (将工作站接入网络)。
- 核心层(网络的高速交换主干)、汇聚层(提供基于策略的连接)、接入层 (将工作站接入网络)。
- java-ssh:逻辑层 控制层 数据层 之间类的关系图解
- struts和spring整合创建Action对象的问题?
- shell自动连接mysql后进行查询和自动备份脚本
- 基数排序 计数排序 桶排序
- 多媒体基础知识笔记
- Wine Trading in Gergovia
- 数据连接核心类(java层)
- 个人开公司流程
- c++ 位域(Bit Fields)
- 从svn log中提取版本号以及时间(从重复行中取出一行)
- android-详解Android中的屏幕方向
- Ajax 加载显示图标集合
- 市场营销学3——市场营销环境
- cdma移动台开机进入online的命令流程
- junit 总测