Android网络服务状态运行机制

主要介绍ServiceStateTracker对ServiceState管理的机制和流程

       IMSI(International Mobile Subscriber Identification Number,国际移动用户识别码)

       ServiceState:保存SIM卡注册成功后电信运行商网络的一些基本服务信息,关键信息包括:电信运行商编号、Radio无线通信模块使用的技术类型和状态、电信运营商网络是否处于漫游状态、无线网络信号强度等电信服务基本信息;ServiceState服务状态的管理和更新是通过ServiceStateTracker对象完成的,主要维护ServiceState类的ss和newSS两个实体对象,从而完成ServiceState服务状态的管理和更新。

一、ServiceState实体类的关键信息:

        1.类的实质

               ServiceState类实现了Parcelable[可以了解下原理]接口, 主要有以下两个过程组成:

               writeToParcel序列化过程,将对象数据写入外部提供的Parcel中;

               createFromParcel反序列化过程,通过外部提供的Parcel获取基本数据来创建数据对象。

           2.类的关键常量及属性

              ServiceState类的关键常量主要是管理和保存4种服务状态和一些无线通信模块的标准技术。无线通信网络类型覆盖GSM、CDMA和UMTS等全球主流的无线通信技术。

              ServiceState类的关键属性定义如下:(Android7.0)

private int mVoiceRegState = STATE_OUT_OF_SERVICE;
private int mDataRegState = STATE_OUT_OF_SERVICE; // 服务状态,0~3共4种状态可选,默认取值为1。

private int mVoiceRoamingType;
private int mDataRoamingType; // 是否进入漫游网络标志

private String mVoiceOperatorAlphaLong; // 电信运营商名称(完整)
private String mVoiceOperatorAlphaShort; // 电信运营商名称(简写)
private String mVoiceOperatorNumeric; // 电信运营商编号
private String mDataOperatorAlphaLong;
private String mDataOperatorAlphaShort;
private String mDataOperatorNumeric;

private boolean mIsManualNetworkSelection; // 手动选择电信运营商标志
private boolean mIsEmergencyOnly; // 仅紧急呼叫标志

        3.类的关键方法

             主要体现在以下三个方面:

  •  ServiceState类的序列化和反序列化的过程;
  •  radioTechnologyToString方法获取手机网络类型对应关系;
  •  toString方法

二、ServiceStateTracker的运行机制:

        android.telephony包路径下定义了ServiceState和SignalStrength两个实体类,这两个类不用区分GSM/CDMA手机网络制式类型;CellLocation抽象类定义在android.telephony包路径下,而在子包gsm和cdma下分别实现了GsmCellLocation和CdmaCellLocation类;com.android.internal.telephony包路径下定义ServiceStateTracker抽象类,同时在子包gsm和cdma下分别继承和实现了GsmServiceStateTracker和CdmaServiceStateTracker类。

          ServiceStateTracker类与CallTracker相同,共同继承了Handle类,其实质是自定义的Handle消息处理类,主要两方面的处理逻辑:

  • 负责网络服务状态的管理;
  • 提供网络服务状态控制的能力。

1.ServiceStateTracker代码结构:

        关键属性:

    private CommandsInterface mCi; // RIL的Java对象,此对象与GSMPhone对象一样,mCi对象具备与RIL层交互的能力
    public ServiceState mSS;
    private ServiceState mNewSS;
    private SignalStrength mSignalStrength; // 保存手机接入电信运营商无线网络后的信号量
    public CellLocation mCellLoc; // 小区信息,国内电信运营商基本没有使用
    public CellLocation mNewCellLoc;
    private GsmCdmaPhone mPhone; // GSMPhone对象

        关键方法:

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值