2024年3月27日发(作者:)

android系统启动流程

android系统启动流程

——从systemserver开始的launcher

目录

1 概述: ................................................................................................................................................... 2

2 systemserver工作内容分析 ......................................................................................................... 4

2.1 SystemServer类简述 ......................................................................................................... 4

2.2 ServerThread类简述 ......................................................................................................... 4

3 ActivityManagerService工作内容分析 .................................................................................... 6

3.1 ActivityManagerService之main .................................................................................. 7

3.1.1创建ActivityManagerService实例 .................................................................... 7

3.1.2 创建ActivityThread实例,获取全局Context ................................................ 8

3.1.3创建ActivityStackSupervisor实例 ................................................................... 10

3.1.4调用startRunning ................................................................................................. 10

3.2 ActivityManagerService之setSystemProcess ....................................................... 11

3.3. ActivityManagerService之setWindowManager ................................................. 12

3.4 ActivityManagerService之systemready ................................................................. 12

3.4.1 启动所有Persistent属性的APK ....................................................................... 13

3.4.2 启动launcher ........................................................................................................ 14

4 ActivityStackSupervisor启动launcher ................................................................................. 15

4.1首先回顾一下ActivityStackSupervisor实例的初始化 ............................................. 15

4.2 进入TopActivitiesLocked ................................ 16

4.3 进入TopActivityLocked ........................................................ 16

4.4 回到HomeActivity。 ........................................ 17

4.5 Thread ................................................................... 17

4.6 Handler ................................................................. 18

4.7 回到omeActivityLocked ................................... 18

4.8 omeActivity ............................................................ 19

4.9 ctivityUncheckedLocked ................................. 20

4.10 ctivityLocked ............................................................................. 21

1 / 41

android系统启动流程

4.11 TopActivitiesLocked ........................................ 22

4.12 TopActivityLocked ................................................................ 22

4.13 pecificActivityLocked ......................................... 24

4.14 artActivityLocked ................................................ 24

4.15 rocessLocked ....................................................... 25

5 Process类管理创建activity进程 .............................................................................................. 27

5.1 : ..................................................................................................................... 27

iaZygote ................................................................................................... 28

5.3 zygoteSendArgsAndGetResult和 openZygoteSocketIfNeeded .................... 28

6 ActivityThread线程类分析 ......................................................................................................... 30

6.1 分析............................................................................................... 30

6.1.1创建了looper对象和本线程绑定。 ................................................................... 30

6.1.2创建了ActivityThread对象实例 ........................................................................ 30

6.1.3进行attach回调 ..................................................................................................... 31

6.1.4 ApplicationLocked ................................... 34

6.1.5 ActivityStackSupervisor. ensureActivitiesVisibleLocked ......................... 34

6.2 ApplicationThread内部类 ............................................................................................. 35

6.2.1 ationThread. scheduleLaunchActivity ................. 35

6.2.2 leResumeActivity ................ 37

6.2.3 发出开机完成通知 ................................................................................................. 38

7 总结 .................................................................................................................................................. 40

7.1 luancher启动流程总结 .................................................................................................... 40

7.2 luancher黑屏问题分析 .................................................................................................... 41

1 概述:

android系统启动到zygote后,系统就真正进入java世界了;而zygote启动的第一

个进程是systemserver.而用户看到的第一个程序是launcher.

本文要分析的正是从systemserver道launcher的启动流程.分析过程涉及到

PowerManagerService,ActivityManagerService, PackageManagerService,

DisplayManagerService, WindowManagerService , InputManagerService ,ServiceManager

等一系列相关知识,必要的地方会做一些简单分析。这些service的详细分析,在另外的笔

记中再做阐述。

2 / 41