CDMA-GSM网络模式切换那些事

2025-11-05

今天因为数据图标显示的一个小问题看了一下CDMA-GSM网络模式切换涉及到的一些动作,看得脑袋都晕了,赶快记下来(因为是从log分析出来的,可能不同的手机流程上可能会有所不同)

调用setPreferredNetworkType后,底层分别会上报一些消息分别是:

1、UNSOL_RESPONSE_CALL_STATE_CHANGED:如果正在打电话,电话会被挂断,会去getCurrentCallList,然后应用来处理

2、UNSOL_RESPONSE_NETWORK_STATE_CHANGED:会去查询network service状态及net type等并更新,但是因为data connect的状态变化的消息还没有上来,所以这时候data connect的状态仍然是CONNECTED。

重点关注一下net type:会从HSPA -> EDGE或者EDGE-> HSPA,在pollStateDone里面会 phone.notifyLocationChanged(),新的net type,旧的data connect这就是数据图标会闪一下的原因。这个问题在Framework层很难修改,或者可以考虑在应用中处理一下:切换网络之前先断掉数据连接,然后再去切换网络模式;或者底层上报的消息顺序能不能有所改动,让UNSOL_DATA_CALL_LIST_CHANGED先于UNSOL_RESPONSE_NETWORK_STATE_CHANGED上报,不过底层修改可能也很难。

3、UNSOL_DATA_CALL_LIST_CHANGED:这里有一个特别重要的接口onPdpStateChanged,当data connect状态是CONNECTED但是active又变成0了,会认为数据有可能断开了,但是又不是很确定,所以会去查一下:getPDPContextList,查询结果如果active还是0,那就会去断开连接,重新拨号。

补充:

1、 从log里可以看到多个UNSOL_DATA_CALL_LIST_CHANGED但只做了一次重新拨号,是因

为第二个消息上报的时候已经不满足if (state == State.CONNECTED)的条件了。

2、 cleanUpConnection(boolean tearDown, String reason)什么时候会断开后重新拨号,其实

是参数reason决定的。


CDMA-GSM网络模式切换那些事.doc 将本文的Word文档下载到电脑 下载失败或者文档不完整,请联系客服人员解决!

下一篇:农业知识竞赛题库

相关阅读
本类排行
× 游客快捷下载通道(下载后可以自由复制和排版)

下载本文档需要支付 7

支付方式:

开通VIP包月会员 特价:29元/月

注:下载文档有可能“只有目录或者内容不全”等情况,请下载之前注意辨别,如果您已付费且无法下载或内容有问题,请联系我们协助你处理。
微信:xuecool-com QQ:370150219