首页 > 其他分享 >Launcher 启动流程

Launcher 启动流程

时间:2024-03-29 14:56:45浏览次数:24  
标签:启动 Launcher 流程 系统 应用程序 Android 图标

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 启动,应用程序显示在界面上。

标签:启动,Launcher,流程,系统,应用程序,Android,图标
From: https://www.cnblogs.com/wanghao-boke/p/18103855

相关文章

  • 启动filezilla后自动连接指定站点及进入指定的目录
    自动连接指定的站点操作步骤<aside>......
  • ESP32-P4 --- 启动流程
     PROCPU执行一级引导程序(内含复位向量代码)根据复位原因及GPIO_STRAP_REG寄存器的值确定启动模式,比如UART下载模式、从FLASH加载二级引导程序执行加载二级引导程序,并执行入口函数call_start_cpu0()根据分区表的配置,加载应用程序通过应用程序二进制文件的头......
  • 如何使用V免签+彩虹易支付个人支付对接支付宝、微信搭建安装流程记录
    这两天没事闲的折腾了下个人免签支付,我相信有很多小伙伴也有这个痛点!这里记录下安装流程,年纪大了以免下次重搭忘记!源码下载以后开始服务器安装,简单点就上宝塔或aapanel(宝塔海外版)!首先ssh登录服务器,然后sudo-i切换到root用户。我这里选择安装宝塔海外版aapanel(英文界面......
  • 启动应用程序出现FirewallAPI.dll找不到问题解决
    其实很多用户玩单机游戏或者安装软件的时候就出现过这种问题,如果是新手第一时间会认为是软件或游戏出错了,其实并不是这样,其主要原因就是你电脑系统的该dll文件丢失了或没有安装一些系统软件平台所需要的动态链接库,这时你可以下载这个FirewallAPI.dll文件(挑选合适的版本文件)把......
  • 启动应用程序出现fthsvc.dll找不到问题解决
    其实很多用户玩单机游戏或者安装软件的时候就出现过这种问题,如果是新手第一时间会认为是软件或游戏出错了,其实并不是这样,其主要原因就是你电脑系统的该dll文件丢失了或没有安装一些系统软件平台所需要的动态链接库,这时你可以下载这个fthsvc.dll文件(挑选合适的版本文件)把它放......
  • 启动应用程序出现fontext.dll找不到问题解决
    其实很多用户玩单机游戏或者安装软件的时候就出现过这种问题,如果是新手第一时间会认为是软件或游戏出错了,其实并不是这样,其主要原因就是你电脑系统的该dll文件丢失了或没有安装一些系统软件平台所需要的动态链接库,这时你可以下载这个fontext.dll文件(挑选合适的版本文件)把它放......
  • Ubuntu/Debian系统下实现应用程序开机自启动功能
    Ubuntu/Debian系统下实现应用程序开机自启动功能在做linux开发的过程中,有时候我们会想让自己编写的应用程序在开机的时候可以做到自动运行。这里以我自己编写的U盘升级程序为例简要介绍在ubuntu/debian系统下实现应用程序的开机自启动功能。一、开发环境ubuntu18.04、debian......
  • Android Context 获取getSystemService全流程分析
    1. ActivityManager的获取ActivityManagermActivityManager=(ActivityManager)context.getSystemService(Context.ACTIVITY_SERVICE);2.在ContextImpl.getSystemService->ActivityManager3.在SystemServiceRegistry中调用getSystemSrevice//缓存//注册//静......
  • 思科交换机导入配置后无法正常启动
    将配置导入设备后(没进行showboot查看)无法启动Console口接入回显:switch:在此输入bootflash:/packages.conf这条命令switch:bootflash:/packages.conf加载成功后,输入console密码,enable密码,输入bootsystemflash:/packages.confshowrun查看一下,......
  • Android启动优化、布局优化必经之路—如何精准获取页面绘制时间
    });}该方法实现比较简单,通过添加idleHandler的方式,发送一个任务,该任务只有在线程处于空闲的状态下会被调用方法二@OverrideprotectedvoidonResume(){super.onResume();finallongstart=System.currentTimeMillis();getWindow().getDecorView().post(newRun......