Launcher启动理解

273 阅读1分钟

Launcher概述

Android系统启动最后一步是启动一个Home应用程序,这个应用程序用来显示系统中已经安装的应用程序,这个Home应用程序就叫做Launcher。应用程序Launcher在启动过程中会请求PackageManagerService返回系统中已经安装的应用程序的信息,并将这些信息封装成一个快捷图标列表显示在系统屏幕上,这样用户可以通过点击这些快捷图标来启动相应的应用程序

启动过程

image.png

Code path :frameworks\base\services\java\com\android\server\SystemServer.java的startOtherServices方法

image.png

Code path : frameworks\base\services\core\java\com\android\server\wm\ActivityTaskManagerInternal.java

image.png

Code path : frameworks\base\services\core\java\com\android\server\wm\ActivityTaskManagerService.java

调用关系链: SystemServer-> startOtherServices()->systemReady()->ActivityTaskManagerInternal->resumeTopActivities()->
ActivityTaskManagerService-> resumeTopActivities()-> RootWindowContainer. resumeFocusedStacksTopActivities()

image.png

image.png Code path: frameworks\base\services\core\java\com\android\server\wm\RootWindowContainer.java

调用关系链: RootWindowContainer->resumeFocusedStacksTopActivities()->ActivityStack.resumeTopActivityUncheckedLocked()

image.png

image.png

Code path:frameworks\base\services\core\java\com\android\server\wm\ActivityStack.java

image.png

image.png

startHomeTaskDisplayArea中的getHomeIntent,获取对应的Launcher配置信息,去拉起Home进程

image.png

Code path: frameworks\base\services\core\java\com\android\server\wm\ActivityTaskManagerService.java

通过Intent.CATEGORY_HOME配置对应的Home参数,进而通过startHomeActivity拉起Launcher进程,
至此laucher进程启动结束