PhoneApp是什么时候被创建的

来源:互联网 发布:数据库备份与恢复 编辑:程序博客网 时间:2024/05/02 04:26

PhoneApp作为Android系统中首屈一指的Application,其在创建的时候会构造出对整个系统来说至关重要的ril.java的实体,在这个rilj构造出来后,会与底层的rild connect上,并且连通他们之间通信的socket,这样手机的通话、短信功能才可用;

PhoneApp如此重要和基础,其是在哪里被创建出来的呢,(在一位同事的帮助下,终于找到了)

首先需要注意下在Phone的AndroidManifest.xml文件中,定义了PhoneApp的一些属性:

   <application android:name="PhoneApp"                 android:persistent="true"                 android:label="@string/dialerIconLabel"                 android:icon="@drawable/ic_launcher_phone">


注意黑色加粗部分;

ActivityManagerService.java里的 SystemReady函数的最后有以下代码:

复制代码
                    List apps = AppGlobals.getPackageManager().                        getPersistentApplications(STOCK_PM_FLAGS);                    if (apps != null) {                        int N = apps.size();                        int i;                        for (i=0; i<N; i++) {                            ApplicationInfo info                                = (ApplicationInfo)apps.get(i);                            if (info != null &&                                    !info.packageName.equals("android")) {                                addAppLocked(info);                            }                        }                    }
复制代码

加粗的函数getPersistentApplications可以get到phoneapp的info,然后使用函数addAppLocked把PhoneApp启动起来~