首页 > 其他分享 >Android应用启动流程一次看透

Android应用启动流程一次看透

时间:2024-07-01 11:54:59浏览次数:16  
标签:请求 启动 App 看透 zygote 应用 进程 Android 流程

1.1、冷启动和热启动

  • 冷启动:当启动应用时,后台没有该应用的进程,这时系统会重新创建一个新的进程分配给该应用,然后再根据启动的参数,启动对应的进程组件,这个启动方式就是冷启动。

  • 热启动:当启动应用时,后台已有该应用的进程(例:按back键、home键,应用虽然会退出,但是该应用的进程是依然会保留在后台,可进入任务列表查看),所以在已有进程的情况下,这种启动会从已有的进程中来启动对应的进程组件,这个方式叫热启动。

1.2、启动架构图:



1.3、启动流程

①点击桌面App图标,Launcher进程采用Binder IPC向system_server进程发起startActivity请求;

②system_server进程接收到请求后,向zygote进程发送创建进程的请求;

③Zygote进程fork出新的子进程,即App进程;

④App进程,通过Binder IPC向sytem_server进程发起attachApplication请求;

⑤system_server进程在收到请求后,进行一系列准备工作后,再通过binder IPC向App进程发送scheduleLaunchActivity请求;

⑥App进程的binder线程(ApplicationThread)在收到请求后,通过handler向主线程发送LAUNCH_ACTIVITY消息;

⑦主线程在收到Message后,通过发射机制创建目标Activity,并回调Activity.onCreate()等方法。

⑧App便正式启动,开始进入Activity生命周期,执行完onCreate/onStart/onResume方法,UI渲染结束后便可以看到App的主界面。



Activity 启动主要涉及到3个进程:
SystemServer进程

SystemServer也是一个进程,包括AMS、PMS、WMS等等。

zygote进程

zygote意为“受精卵“。Android是基于Linux系统的,而在Linux中,所有的进程都是由init进程直接或者是间接fork出来的,zygote进程也不例外。

App进程

App进程是用户点击桌面icon时,通过Launcher进程请求SystemServer,再调用Zygote孵化的

标签:请求,启动,App,看透,zygote,应用,进程,Android,流程
From: https://www.cnblogs.com/linhaostudy/p/18277752

相关文章

  • Android系统之System Server大纲
    前言SystemServer是android基本服务的提供者,是android系统运行的最基本需求,所有server运行在一个叫system_process的进程中,system_process进程是androidjava虚拟机跑的第一个进程,从Zygote创建而来,是andorid系统最重要的java虚拟机。可以说,整个android系统的业务都是围绕syste......
  • Android Gradle 开发与应用 (三): 依赖管理与版本控制
    目录1.依赖管理的重要性1.1依赖的类型1.2Gradle中的依赖声明2.版本控制的策略2.1固定版本与动态版本2.2版本冲突的解决3.Gradle插件的使用3.1常用的Gradle插件3.2自定义插件4.多模块项目中的依赖管理4.1模块间依赖4.2公共依赖5.依赖版本管理的最......
  • 【转】Androidstudio报错Algorithm HmacPBESHA256 not available
     删除debug.keystone这个文件就可以了。 https://blog.csdn.net/O_PUTI/article/details/138227534 -----参考了更改GradleJDK等的办法都没有用,最终通过一个一个问题拍错解决。第一个问题:版本不一致 第二个问题秘钥获取不成功:删除这个文件 然后就编译成功了。......
  • CUDA编程的注意事项和使用流程详解
    目录一、背景二、CUDA编程的基本概念 2.1、CUDA线程(Thread):2.2、线程块(Block):2.3、网格(Grid):2.4、内存模型:三、CUDA编程流程3.1.环境配置3.2.编写CUDA代码 3.2.1、初始化和分配内存3.2.2、数据传输3.2.3、内核函数(Kernel)调用3.2.4、结果传回主机3.2.5、释放资源......
  • 【RK3588】Android系统OTA升级详细流程(三)
    接着上一篇文章,做一下OTA包远程升级测试。1.搭建OTA升级服务器Ubuntu系统下搭建OTA服务器。我们将使用Tomcat来搭建web服务器,Tomcat是一个免费、开源的轻量级web应用服务器。1.1安装JDKTomcat依赖于Java运行环境,所以需要先安装Java环境。可自行前往JavaArchive|Oracle......
  • 亚马逊卖家的福音:订单发货贴单系统如何革新业务流程
    在亚马逊这个全球领先的电商平台上,订单发货贴单系统对于卖家来说,就如同航海者的罗盘,指引着他们高效、精准地完成每一个订单的旅程。面对亚马逊庞大的用户群和海量订单,一个高效的订单处理系统不仅是卖家的需求,更是他们成功航行的关键。亚马逊订单发货贴单系统,便是这样一套自动......
  • 适用于 Android 的 几种短信恢复应用程序
    Android设备上的短信丢失可能由于多种原因而丢失,例如意外删除、恢复出厂设置、系统崩溃或病毒攻击。是否有应用程序可以恢复Android上已删除的短信?幸运的是,有几款短信恢复应用程序可以扫描您的Android手机并从内存或SIM卡中检索已删除的短信。然而,并非所有短信恢复应用......
  • Go WaitGroup流程
    WaitGroup流程typeWaitGroupstruct{ noCopynoCopy //64-bitvalue:high32bitsarecounter,low32bitsarewaitercount. //64-bitatomicoperationsrequire64-bitalignment,but32-bit //compilersdonotensureit.Soweallocate12bytesandthe......
  • Go Mutex 流程
    mutex流程typeMutexstruct{stateint32semauint32}等效于typeMutexstruct{lockeduintwokenuintstarvinguintwaiterCountuintsemauint32}Lock流程%%{init:{'flowchart':{'curve':'monoto......
  • 大模型备案网信办全网最详细流程说明【附附件】
    本文要点:大模型备案最详细说明,大模型备案条件有哪些,《算法安全自评估报告》模板,大模型算法备案,大模型上线备案,生成式人工智能(大语言模型)安全评估要点,网信办大模型备案。大模型备案安全评估流程详细说明,见下图:大模型安全评估流程图算法备案安全评估流程详细说明,见下图:算......