-
Notifications
You must be signed in to change notification settings - Fork 2
/
2.App的启动流程.txt
64 lines (49 loc) · 1.55 KB
/
2.App的启动流程.txt
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
@startuml
'请先安装PlantUML plugin查看该uml
title __2.App的启动过程__
entity "Launcher"
entity AMS
entity Zygote
entity "App进程" as App
entity Activity
entity WMS
Launcher -> AMS: startActivity()
activate AMS
AMS -> Zygote: socket通信:请求创建App进程
deactivate AMS
activate Zygote
Zygote -> App: fork App进程
deactivate Zygote
App -> App: AppRuntime#onZygoteInit()
note left :开启binder机制
App -> App: ActivityThread.main()
note left :开启loop
activate App
App-> AMS: attachApplication(appThread)
note left#ccffe5 : 注册ApplicationThread,\n可以和AMS双向通信。
deactivate App
AMS -> App: thread.bindApplication();
App -> App: (Application)clazz.newInstance();
App -> App: app.attach(context);
note left :1.attachBaseContext\n2.取出mLoadedApk
App -> App: installContentProviders();
note left :1.一些第三方库会在这里做初始化
App -> App: app.onCreate();
AMS -> App: thread.scheduleTransaction()
activate App
App -> App:handleLaunchActivity()
activate App
App -> Activity: (Activity)clazz.newInstance();
App -> Activity: attach(context, ..., application,)
note left :1.attachBaseContext\n2.初始化Window
App -> Activity: onCreate()
note left :1.installDecorView
deactivate App
App -> App:handleResumeActivity()
activate App
App -> Activity: onResume()
App -> WMS: wm.addView(decorView)
note left#ccffe5 : 注册IWindow,InputChannel,\n可以和WMS双向通信。
deactivate App
deactivate App
@enduml