android开机启动流程

来源:互联网 发布:三唑仑在淘宝叫什么 编辑:程序博客网 时间:2024/05/08 05:26
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",因此也不启动。
0 0
原创粉丝点击