(O)Telephony分析之通话流程分析(一) TelecomManager的getTelecomService方法解析

本文深入探讨Android系统中通话流程,聚焦TelecomManager的getTelecomService方法,揭示其在TelecomLoaderService初始化过程中的作用。通过对TelecomLoaderService构造方法的分析,理解Android电话服务的启动机制。
摘要由CSDN通过智能技术生成
这段时间,在研究Telephony相关的通话流程,虽然从书上看到通话流程,但是自己在分析Google 8.0的代码的时候,发现依旧有些复杂,现在就将自己的研究成果记录一下,以备后续查阅。
一.TelecomLoaderService的初始化

在此前的Android机器启动的流程中,分析过,SystemServer中启动系统的所有服务和进程,而在此文件中,我们会发现,TelecomLoaderService的初始化

private void startOtherServices() {
		......
		mSystemServiceManager.startService(TelecomLoaderService.class);
		......
		mSystemServiceManager.startBootPhase(SystemService.PHASE_ACTIVITY_MANAGER_READY);
		......
}
从上面的代码中,可以看到,在SystemServer中做了如下的事情
1)调用SystemServiceManager的startService方法,传入的参数就是TelecomLoaderService的class,而这个startService方法,此前也分析过,就是先调用传入class参数的有参构造方法(参数为Context),然后将传入的class参数加入到SystemServiceManager的mService中
进行管理,最后调用传入参数的onStart方法
2)调用SystemServiceManager的startBootPhase方法,传入的参数为SystemService.PHASE_ACTIVITY_MANAGER_READY,而此方法主要是调用加入SystemServiceManager的mService中的所有service的onBootPhase方法,即会调用TelecomLoaderService的onBootPhase方法


接下来,我们就查看一下
(一)TelecomLoaderService的构造方法

public TelecomLoaderService(Context context) {
    super(context);
    mContext = context;
    registerDefaultAppProviders();
}
调用了registerDefaultAppProviders方法
private void registerDefaultAppProviders() {
    final PackageManagerInternal packageManagerInternal = LocalServices.getService(
            PackageManagerInternal.class);

    // Set a callback for the package manager to query the default sms 
  • 0
    点赞
  • 6
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值