Chinaunix首页 | 论坛 | 博客
  • 博客访问: 1070032
  • 博文数量: 169
  • 博客积分: 12306
  • 博客等级: 上将
  • 技术积分: 1299
  • 用 户 组: 普通用户
  • 注册时间: 2006-08-29 14:55
文章分类

全部博文(169)

文章存档

2012年(18)

2011年(78)

2010年(15)

2009年(1)

2008年(11)

2007年(39)

2006年(7)

我的朋友

分类: LINUX

2012-01-12 10:19:32

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 ApplicationInfo info
= (ApplicationInfo)apps.get(i);
if (info != null &&
!info.packageName.equals("android")) {
addAppLocked(info);
}
}
}

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

 

这里就是PhoneApp被最先搞起来的地方~


原文地址:http://www.cnblogs.com/flyme/archive/2011/12/29/2306136.html

阅读(1584) | 评论(0) | 转发(0) |
给主人留下些什么吧!~~