android 系统数据业务---模式切换分析(上)

5 setPreferredNetworkType详解

5.1 RIL处理

RIL.java中setPreferredNetworkType方法如下,

@Override
public void setPreferredNetworkType(int networkType , Message response) {
      RILRequest rr = RILRequest.obtain(
          RILConstants.RIL_REQUEST_SET_PREFERRED_NETWORK_TYPE, response);
rr.mParcel.writeInt(1);
      rr.mParcel.writeInt(networkType);
mPreferredNetworkType = networkType;
if (RILJ_LOGD) riljLog(rr.serialString() + "> " + requestToString(rr.mRequest)
                + " : " + networkType);
send(rr);
}

发送的是RIL_REQUEST_SET_PREFERRED_NETWORK_TYPE类型的消息。

 

每一个通过RIL发送的消息都会有对应的返回消息,RIL中的processSolicited方法会对

RIL_REQUEST_SET_PREFERRED_NETWORK_TYPE类型的消息处理如下,

A,首先获取ril库上报的数据,

case RIL_REQUEST_SET_PREFERRED_NETWORK_TYPE: ret =  responseVoid(p); break;

responseVoid方法返回的是null,

B,然后进行回调,

if (rr.mResult != null) {
      AsyncResult.forMessage(rr.mResult, ret, null);
      rr.mResult.sendToTarget();
}

AsyncResult 回调就一个原则,谁发起谁处理。

回看MobileNetworkSettings的onPreferenceChange方法,

mPhone.setPreferredNetworkType(modemNetworkMode, mHandler
    .obtainMessage(MyHandler.MESSAGE_SET_PREFERRED_NETWORK_TYPE));

调用PhoneProxy的setPreferredNetworkType携带的是MESSAGE_SET

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值