数据业务建立流程之DcTracker创建过程(原)

2024-05-26 10:18

本文主要是介绍数据业务建立流程之DcTracker创建过程(原),希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!

一、DcTracker介绍


        DcTracker是Telephony框架中负责数据业务的核心(类似于GsmCallTracker是通话业务核心,GsmServiceStateTracker是网络CS业务的核心),所有对数据网络的请求(打开关闭数据开关、切换数据卡、修改APN参数等)都会发送到该处理中心来处理。本节所涉及的大部分代码也都在该对象中。下面我们先来看该对象的初始化流程。

        DcTracker是在Phone对象创建过程中被创建的,确切来说,如果当前使用的是GSMPhone,那么在GSMPhone创建过程中就会创建DcTracker对象:
        @GSMPhone.javapublic GSMPhone (Context context, CommandsInterface ci, PhoneNotifier notifier, boolean unitTestMode) {//创建DcTracker对象,传递的参数就是当前的GSMPhone对象mDcTracker = new DcTracker(this);}
        那么DcTracker是什么属性呢?
        public final class DcTracker extends DcTrackerBase {}public abstract class DcTrackerBase extends Handler {}
        从这里看到,DcTracker的父类是DcTrackerBase, 他们的本质都是Handler
        然后来看DcTracker的初始化过程:
        @DcTracker.javapublic DcTracker(PhoneBase p) {super(p);mDataConnectionTracker = this;//注册监听器update();//监听APN状态mApnObserver = new ApnChangeObserver();p.getContext().getContentResolver().registerContentObserver(Telephony.Carriers.CONTENT_URI, true, mApnObserver);//从networkAttributes数组中初始化APN参数initApnContexts();for (ApnContext apnContext : mApnContexts.values()) {IntentFilter filter = new IntentFilter();filter.addAction(INTENT_RECONNECT_ALARM + '.' + apnContext.getApnType());filter.addAction(INTENT_RESTART_TRYSETUP_ALARM + '.' + apnContext.getApnType());mPhone.getContext().registerReceiver(mIntentReceiver, filter, null, mPhone);}ConnectivityManager cm = (ConnectivityManager)p.getContext().getSystemService(Context.CONNECTIVITY_SERVICE);//添加各种网络请求过滤器,用于根据这些过滤器发起不同的数据连接mNetworkFilter = new NetworkCapabilities();mNetworkFilter.addTransportType(NetworkCapabilities.TRANSPORT_CELLULAR);mNetworkFilter.addCapability(NetworkCapabilities.NET_CAPABILITY_MMS);mNetworkFilter.addCapability(NetworkCapabilities.NET_CAPABILITY_SUPL);mNetworkFilter.addCapability(NetworkCapabilities.NET_CAPABILITY_DUN);mNetworkFilter.addCapability(NetworkCapabilities.NET_CAPABILITY_FOTA);mNetworkFilter.addCapability(NetworkCapabilities.NET_CAPABILITY_IMS);mNetworkFilter.addCapability(NetworkCapabilities.NET_CAPABILITY_CBS);mNetworkFilter.addCapability(NetworkCapabilities.NET_CAPABILITY_IA);mNetworkFilter.addCapability(NetworkCapabilities.NET_CAPABILITY_RCS);mNetworkFilter.addCapability(NetworkCapabilities.NET_CAPABILITY_XCAP);mNetworkFilter.addCapability(NetworkCapabilities.NET_CAPABILITY_EIMS);mNetworkFilter.addCapability(NetworkCapabilities.NET_CAPABILITY_NOT_RESTRICTED);mNetworkFilter.addCapability(NetworkCapabilities.NET_CAPABILITY_INTERNET);//初始化数据网络的NetworkFactory,并设置数据网络的分值为50mNetworkFactory = new TelephonyNetworkFactory(this.getLooper(), p.getContext(), "TelephonyNetworkFactory", mNetworkFilter);mNetworkFactory.setScoreFilter(50);mNetworkFactoryMessenger = new Messenger(mNetworkFactory);cm.registerNetworkFactory(mNetworkFactoryMessenger, "Telephony");//初始化紧急APNinitEmergencyApnSetting();addEmergencyApnSetting();mProvisionActionName = "com.android.internal.telephony.PROVISION" + p.getPhoneId();}
        在上面这个初始化过程中,主要完成了三个任务:
        1、初始化各种监听器;
        2、初始化TelephonyNetworkFactory对象;

这篇关于数据业务建立流程之DcTracker创建过程(原)的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!



http://www.chinasem.cn/article/1004186

相关文章

Security OAuth2 单点登录流程

单点登录(英语:Single sign-on,缩写为 SSO),又译为单一签入,一种对于许多相互关连,但是又是各自独立的软件系统,提供访问控制的属性。当拥有这项属性时,当用户登录时,就可以获取所有系统的访问权限,不用对每个单一系统都逐一登录。这项功能通常是以轻型目录访问协议(LDAP)来实现,在服务器上会将用户信息存储到LDAP数据库中。相同的,单一注销(single sign-off)就是指

浅析Spring Security认证过程

类图 为了方便理解Spring Security认证流程,特意画了如下的类图,包含相关的核心认证类 概述 核心验证器 AuthenticationManager 该对象提供了认证方法的入口,接收一个Authentiaton对象作为参数; public interface AuthenticationManager {Authentication authenticate(Authenti

Spring Security基于数据库验证流程详解

Spring Security 校验流程图 相关解释说明(认真看哦) AbstractAuthenticationProcessingFilter 抽象类 /*** 调用 #requiresAuthentication(HttpServletRequest, HttpServletResponse) 决定是否需要进行验证操作。* 如果需要验证,则会调用 #attemptAuthentica

作业提交过程之HDFSMapReduce

作业提交全过程详解 (1)作业提交 第1步:Client调用job.waitForCompletion方法,向整个集群提交MapReduce作业。 第2步:Client向RM申请一个作业id。 第3步:RM给Client返回该job资源的提交路径和作业id。 第4步:Client提交jar包、切片信息和配置文件到指定的资源提交路径。 第5步:Client提交完资源后,向RM申请运行MrAp

【Python编程】Linux创建虚拟环境并配置与notebook相连接

1.创建 使用 venv 创建虚拟环境。例如,在当前目录下创建一个名为 myenv 的虚拟环境: python3 -m venv myenv 2.激活 激活虚拟环境使其成为当前终端会话的活动环境。运行: source myenv/bin/activate 3.与notebook连接 在虚拟环境中,使用 pip 安装 Jupyter 和 ipykernel: pip instal

【机器学习】高斯过程的基本概念和应用领域以及在python中的实例

引言 高斯过程(Gaussian Process,简称GP)是一种概率模型,用于描述一组随机变量的联合概率分布,其中任何一个有限维度的子集都具有高斯分布 文章目录 引言一、高斯过程1.1 基本定义1.1.1 随机过程1.1.2 高斯分布 1.2 高斯过程的特性1.2.1 联合高斯性1.2.2 均值函数1.2.3 协方差函数(或核函数) 1.3 核函数1.4 高斯过程回归(Gauss

在cscode中通过maven创建java项目

在cscode中创建java项目 可以通过博客完成maven的导入 建立maven项目 使用快捷键 Ctrl + Shift + P 建立一个 Maven 项目 1 Ctrl + Shift + P 打开输入框2 输入 "> java create"3 选择 maven4 选择 No Archetype5 输入 域名6 输入项目名称7 建立一个文件目录存放项目,文件名一般为项目名8 确定

Java 创建图形用户界面(GUI)入门指南(Swing库 JFrame 类)概述

概述 基本概念 Java Swing 的架构 Java Swing 是一个为 Java 设计的 GUI 工具包,是 JAVA 基础类的一部分,基于 Java AWT 构建,提供了一系列轻量级、可定制的图形用户界面(GUI)组件。 与 AWT 相比,Swing 提供了许多比 AWT 更好的屏幕显示元素,更加灵活和可定制,具有更好的跨平台性能。 组件和容器 Java Swing 提供了许多

顺序表之创建,判满,插入,输出

文章目录 🍊自我介绍🍊创建一个空的顺序表,为结构体在堆区分配空间🍊插入数据🍊输出数据🍊判断顺序表是否满了,满了返回值1,否则返回0🍊main函数 你的点赞评论就是对博主最大的鼓励 当然喜欢的小伙伴可以:点赞+关注+评论+收藏(一键四连)哦~ 🍊自我介绍   Hello,大家好,我是小珑也要变强(也是小珑),我是易编程·终身成长社群的一名“创始团队·嘉宾”

建立升序链表

题目1181:遍历链表 时间限制:1 秒 内存限制:32 兆 特殊判题:否 提交:2744 解决:1186 题目描述: 建立一个升序链表并遍历输出。 输入: 输入的每个案例中第一行包括1个整数:n(1<=n<=1000),接下来的一行包括n个整数。 输出: 可能有多组测试数据,对于每组数据, 将n个整数建立升序链表,之后遍历链表并输出。 样例输