Android Launcher 启动流程
Launcher 启动过程
介绍
- Launcher 是一个应用进程,用来显示系统中已经安装的应用程序
- Launcher 在启动过程中会请求 PackageManagerService 返回系统中已经安装的应用程序信息,并将这些信息封装成一个快捷图标显示在系统屏幕上,这样用户就能点击这些快捷图标来启动相应的应用程序。
- 通俗的将,Launcher 就是 Android 的系统桌面,主要是用来
- 作为 Android 系统的启动器,用于启动应用程序
- 作为 Android 系统的桌面,用于显示管理应用进程的快捷图标和其他桌面组件
启动过程介绍
- SystemServer 进程会在启动过程中去启动 PackageManagerService
- PackageManagerService 会将系统中的应用进程安装完成
- 再此之前已启动的 ActivityManagerService 会将 Launcher 启动起来
启动 Launcher
- ActivityManagerService 启动 Launcher
- systemReady() 实现
- resumeFocusedStackTopActivityLocked() 函数实现
- ActivityStack 调用保存过程
- ActivityStackSupervisor 调用过程
- ActivityManagerService 调用过程
- mFactoryTest 代表系统的运行模式,系统运行模式分为三种,分别是非工厂模式、低级工厂模式和高级工厂模式
- mTopAction用于描述第一个被启动Activity组件的Action,默认值为Intent.ACTION_MAIN。
- 判断
Action == Intent.ACTION_MAIN && Category == Intent.CATEGORY_HOME
的进程是否启动
- AndroidMainfest.xml
程序的属性在文件 AndroidManifest.xml 文件中标注。 如下方的 Launcher 进程属性文件所示
- intent-filter 标签中,匹配了 action 为
android.intent.action.MAIN
,category 匹配为category.HOME
- 设置了
android.intent.category.HOME
后,关键字android:name="com.android.launcher3.Launcher"
就变成了主 Activity
Launcher 中应用图标的显示过程
- Launcher是用工作区的形式来显示系统安装的应用程序的快捷图标的,每一个工作区都是用来描述一个抽象桌面的,它由n个屏幕组成,每个屏幕又分为n个单元格,每个单元格用来显示一个应用程序的快捷图标。
- onCreate() 初始化类
- setLaunchr()
- startLoader()
- LoaderTask
至此,Android 启动,应用程序显示在界面上。