您的位置:首页 > 移动开发 > Android开发

android开机启动流程

2014-05-18 23:17 330 查看
launched processes during Android booting.

user pid ppid name

root 1 0 init

root 34 1 zygote

system 86 34 system_server(ActivityManagerService)

radio 118 34 com.android.phone

app_5 139 34 com.android.mms

app_3 139 34 com.android.alarmclock

app_6 139 34 com.android.calendar

......

Root进程

init进程主要任务

1.解析init.rc 和 init.%hardware%.rc

2.开启Android Java虚拟机

...

Java Application进程

Java APP都来自于zygote的分支,system_server是最典型的Java APP。

System Server

system_Server启动ActivityManager, WindowManager, PackageManager

ActivityManagerService运行在system_service里,ActivityManagerService.systemReady准备好后将启动persistent applications.

persistent applications就是指在AndroidManifest.xml中有如下标记的:

<application android:name="..." android:persistent="true" ...>

Phone启动起来了

First Activity启动

ActivityManagerService发出Intent.CATEGORY_HOME来启动相应Activity

SetupWizard,JrdSetupWizard,Launcher等APP都监听了此Action,只是android:priority不同而已。

SetupWizard android:priority="5"

JrdSetupWizard android:priority="2"

Launcher android:priority=默认值0

其它Activity启动

当activity idle第一次出现,ActivityManagerService发出广播ACTION_BOOT_COMPLETED,Currently, MMS, AlarmClock, Calendar, MediaProvider, VoiceDialer and IM等都注册了此广播,进而自动启动了。Email,DownloadProvider也注册了,但是AndroidManifest.xml中有属性android:enabled="false",因此也不启动。
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: