一、前言
本来想附上代码的,但是有很多芯片厂商以及公司内部的方案在上面,不好公开…
你可以对照着我这些注释,去自个公司项目或者http://aospxref.com/这类开源网站上查代码
补充一点,文章是我在一年多前写的,只提供学习方法不具备时效性
整个Framework层的Telephony框架运行在一个叫做Phone(com.android.phone)的进程中。
在我写的《SIM卡加载流程解析》文章中提到过“在Phon进程启动过程中,在流程第三步PhoneFactory.makeDefaultPhone()方法中创建了UiccContorller的对象”能说明这一点。Phone进程启动的过程中,会初始化非常多的分支功能,SIM卡流程初始化就是其中之一,所以我觉得有必要写一下Phone进程的框架
二、Phone进程启动流程
tips:
这个是我网上随便找的老古董流程图,谷歌《AOSP Phone进程启动流程图》,对照着这个地图去找在项目中对应的类与函数,对比AOSP与芯片厂商定制版印证中学习,这是一个比较好的学习方法。
Phone进程启动如图上所示,根据流程图在代码中的Telephony模块查找,启动:
1、PhoneApp.java
在Unisoc项目中,PhoneApp类注释表明Phone进程是优先级最高的应用程序类。
PhoneApp的onCreate()做了:
1)创建PhoneGlobals对象并初始化。
2)创建CallForwardHelper实例
3)电信账户注册实例