双卡数据切换

本文详细介绍了Android系统中双卡数据切换的过程,从Settings的SimDialogActivity开始,涉及SubscriptionController、PhoneSwitcher和SubscriptionMonitor等组件如何响应ACTION_DEFAULT_DATA_SUBSCRIPTION_CHANGED广播,以及DcTracker和ApnContext如何管理数据连接的请求与释放,揭示了切换默认数据卡时的数据连接管理逻辑。
摘要由CSDN通过智能技术生成

Platform:Android-7.1.1_r22


开机怎么设置DDS?

Settings的SimDialogActivity中调用SubscriptionManager.setDefaultDataSubId()
进而调用SubscriptionController.setDefaultDataSubId(int subId)

public void setDefaultDataSubId(int subId) {
......
// 保存默认数据卡,并发送广播ACTION_DEFAULT_DATA_SUBSCRIPTION_CHANGED
Settings.Global.putInt(mContext.getContentResolver(),
Settings.Global.MULTI_SIM_DATA_CALL_SUBSCRIPTION, subId);
broadcastDefaultDataSubIdChanged(subId);
}

有多个地方会收到广播ACTION_DEFAULT_DATA_SUBSCRIPTION_CHANGED,
PhoneSwitcher收到后会发送RIL_REQUEST_ALLOW_DATA(false/true),
SubscriptionMonitor收到会为新的DDS发送SETUP_DATA_CALL。

PhoneSwitcher收到广播ACTION_DEFAULT_DATA_SUBSCRIPTION_CHANGED
// onEvaluate(REQUESTS_UNCHANGED, "defaultChanged");
private void onEvaluate(boolean requestsChanged, String reason) {
......
boolean diffDetected = requestsChanged;
final int dataSub = mSubscriptionController.getDefaultDataSubId(); // SubscriptionController中已经修改
if (dataSub != mDefaultDataSubscription) {
sb.append(" default ").append(mDefaultDataSubscription).append("->").append(dataSub);
mDefaultDataSubscription = dataSub;
diffDetected = true;

}
...

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值