数据业务(数据网络,即SIM卡上网)的建立需满足两个条件:1.选择并激活合适的APN;2.PS域已处于Attached状态。默认状态下,手机开机后就会发起PS附着的信令给网络。而所有数据网络的请求(打开关闭数据开关、切换数据卡、修改APN等)都必须经过DcTacker.java处理,其是Telephony框架中负责数据业务的核心。
一、数据业务建立之准备知识
1. DcTracker
DcTracker对象在Phone对象创建过程中被创建,继承于DcTrackerBase,而DcTackerBase继承于Handler,主要完成以下任务:
1. update():onUpdateIcc更新SIM卡状态;getDataEnabled()获取数据流量开关状态;
2. 初始化各种监听器:registerForAllEvents(),并完成相应事件处理,如PS Attached事件EVENT_DATA_CONNECTION_ATTACHED和网络技术(LTE/GSM/UMTS)监听事件EVENT_DATA_RAT_CHANGED;
3. 初始化一些基本的APN参数:initApnContexts();
图1 DcTacker构造函数源码
2. APN创建
APN的创建主要有两种情况触发:①SIM卡载入完毕(onRecordsLoaded());②APN改变