Android Launcher 启动流程

Launcher 启动过程

介绍

  • Launcher 是一个应用进程,用来显示系统中已经安装的应用程序
  • Launcher 在启动过程中会请求 PackageManagerService 返回系统中已经安装的应用程序信息,并将这些信息封装成一个快捷图标显示在系统屏幕上,这样用户就能点击这些快捷图标来启动相应的应用程序。
  • 通俗的将,Launcher 就是 Android 的系统桌面,主要是用来
    1. 作为 Android 系统的启动器,用于启动应用程序
    2. 作为 Android 系统的桌面,用于显示管理应用进程的快捷图标和其他桌面组件

启动过程介绍

  1. SystemServer 进程会在启动过程中去启动 PackageManagerService
  2. PackageManagerService 会将系统中的应用进程安装完成
  3. 再此之前已启动的 ActivityManagerService 会将 Launcher 启动起来

启动 Launcher

  1. ActivityManagerService 启动 Launcher

image

  1. systemReady() 实现

image

  1. resumeFocusedStackTopActivityLocked() 函数实现

image

  1. ActivityStack 调用保存过程

image

  1. ActivityStackSupervisor 调用过程

image

  1. ActivityManagerService 调用过程

image

  • mFactoryTest 代表系统的运行模式,系统运行模式分为三种,分别是非工厂模式、低级工厂模式和高级工厂模式
  • mTopAction用于描述第一个被启动Activity组件的Action,默认值为Intent.ACTION_MAIN。
  • 判断 Action == Intent.ACTION_MAIN && Category == Intent.CATEGORY_HOME 的进程是否启动
  1. AndroidMainfest.xml
    程序的属性在文件 AndroidManifest.xml 文件中标注。 如下方的 Launcher 进程属性文件所示

Launcher_AndroidMainest.xml

  • 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个单元格,每个单元格用来显示一个应用程序的快捷图标。
  1. onCreate() 初始化类

image

  1. setLaunchr()

image

  1. startLoader()

image

  1. LoaderTask

image

至此,Android 启动,应用程序显示在界面上。

posted @ 2024-03-29 14:51  王清河  阅读(464)  评论(0编辑  收藏  举报