您好,欢迎访问三七文档
当前位置:首页 > IT计算机/网络 > linux/Unix相关 > 创建phone进程以及创建phone进程的异常过程
(1)创建com.android.phone的进程AndroidManifest.xml中的application有属性android:persistent,表示它是常驻的应用。有这个属性的话,手机在开机过程由AcitivityManagerService负责把该进程启动起来。如下时序图:a.一个APK若需要运行在phone进程中需要在AndroidManifest.xml文件中添加android:shareUserId=“android.uid.phone”并且对应的APK一定是系统APK。b.一个组件若需要运行在phone进程中需要AndroidManifest.xml文件中对应组件中添加:android:process=”com.android.phone”。组件对应的APK也一定是系统APK。(2)注册网络类型双卡项目:a.主卡注册哪个网络类型根据首选网络类型以及你的SIM具备注册哪个网络的能力;b.副卡只能注册GSM网络。假如副卡插入的是中国电信卡,因为电信没有GSM2G网络,那么它在国内是没办法注册上网络的。单卡项目:a.注册哪个网络类型根据首选网络类型以及你的SIM具备注册哪个网络的能力;首选网络类型可以在设置中查看:代码体现:makeDefaultPhone方法:其中capabilityPhoneId由属性persist.radio.simswitch来决定,默认是卡槽1。关于切换主副卡的资料可以参考FAQ12629和FAQ13485(3)创建Phone对象首先来看下时序图PhoneGlobals的onCreate是在创建com.android.phone进程时调用。Phone可以分为三种:(1)GSMPhone(2)CDMAPhone(3)CDMALTEPhone双卡项目:a.主卡由首选网络类型决定创建什么类型的Phone对象。b.副卡总是创建GSMPhone的对象。单卡项目:a.由首选网络类型决定和双卡项目中(a)一致。CDMAPhone和CDMALTEPhone是CDMA制式手机时创建,比如说电信C2K项目。C2K资料参考FAQOnline:《C2K快速入门》除此之外都是创建GsmPhone,不管是你的首选网络类型是LTE、WCDMA还是GSM,为什么呢?看下代码getPhoneType总是返回PhoneConstants.PHONE_TYPE_GSM再看创建Phone对象的代码:makeDefaultPhone方法:(4)案例分析创建com.android.phone进程的正常的log在sys_log.boot(带boot后缀的log是指开机过程的log)用关键字com.android.phone搜索有:784IActivityManager:Startproc1408:com.android.phone/1001foraddedapplicationcom.android.phone创建com.android.phone进程的异常的log784IActivityManager:Startproc1382:com.android.phone/1001forcontentprovidercom.android.providers.telephony/.TelephonyProvidercom.android.phone创建异常的话会导致开机后卡注册上网络耗时很长等问题。参考资料:Telephony_customize_debugSOP.pptx
本文标题:创建phone进程以及创建phone进程的异常过程
链接地址:https://www.777doc.com/doc-2644641 .html