Loading [MathJax]/jax/output/CommonHTML/config.js
首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >专栏 >Android应用启动流程一次看透

Android应用启动流程一次看透

作者头像
233333
发布于 2024-07-02 00:28:09
发布于 2024-07-02 00:28:09
1.1K0
举报

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孵化的

本文参与 腾讯云自媒体同步曝光计划,分享自作者个人站点/博客。
原始发表:2024-07-01,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 作者个人站点/博客 前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体同步曝光计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
暂无评论
推荐阅读
编辑精选文章
换一批
从源码解析Android应用启动全流程:从点击图标到Activity渲染的深度剖析
本文将深入Android源码(基于Android 12),解析从用户点击桌面图标到应用完全启动的全过程,揭示系统服务、Zygote进程、Binder通信等核心机制如何协同工作。
李林LiLin
2025/07/19
1500
【Android 启动过程】Android 应用启动流程 | Activity 启动流程
打开 Android 手机电源键后 , 先运行 BootLoader , 然后使用 BootLoader 加载 Linux Kernel ,
韩曙亮
2023/03/29
4.3K0
【Android 启动过程】Android 应用启动流程 | Activity 启动流程
Android启动过程分析(图+文)
①点击桌面App图标,Launcher进程采用Binder IPC向system_server进程发起startActivity请求;
Anymarvel
2018/10/22
4.3K0
Android启动过程分析(图+文)
Android面试题之App的启动流程和启动速度优化
①点击桌面App图标,Launcher进程采用Binder IPC向system_server进程发起startActivity请求;
AntDream
2024/06/24
2160
Android面试题之App的启动流程和启动速度优化
Android Framework学习笔记之handle
内存泄漏(Memory Leak)是指程序中已动态分配的堆内存由于某种原因程序未释放或无法释放,造成系统内存的浪费,导致程序运行速度减慢甚至系统崩溃等严重后果。
李小白是一只喵
2021/12/06
4650
Android Framework学习笔记之handle
金九银十Android面试复习题集:关于四大组件中的Activity你了解多少?
又要到金九银十的跳槽季了,为了让更多的小伙伴可以在面试的时候取的更好的offer,不定期都会分享BAT常问面试题,由于内容较多,预计阅读需要....3个月
Android技术干货分享
2020/09/20
1.6K0
金九银十Android面试复习题集:关于四大组件中的Activity你了解多少?
搞懂Android应用启动过程,再也不怕面试官了
init进程fork出Zygote进程后,Zygote进程会创建一个服务端socket,等待AMS发起socket请求。
Android技术干货分享
2020/11/25
5.7K0
搞懂Android应用启动过程,再也不怕面试官了
Android高级常见面试题解析:说说Activity的启动流程
1) 父进程通过hanleParentProc(pid)把子进程的pid通过Socket发送给AMS 2)子进程调用handleChildProc函数,做一些通用的初始化,比如启用Binder机制;执行应用程序的入口函数,也就是ActivityThread的Main函数
Android技术干货分享
2020/03/17
2.9K0
Android高级常见面试题解析:说说Activity的启动流程
Android FrameWork面试点集合
WatchDog WatchDog的作用上面说过:一是检查是否发生了死锁,二是检查线程是否被任务blocked
没关系再继续努力
2021/11/23
6550
【胖虎的逆向之路】02——Android整体加壳原理详解&实现
为了深入了解Android 逆向相关的内容中加壳的原理,前面已经完成了关于Android中的动态加载和动态加载类关系的详解,那么接下来是对Android的整体加壳进行实现,并对原理进行讲解,由于作者能力有限,会尽力的详细描述整体加壳的流程及原理,如本文中有任何错误,烦请指正,感谢~
胖虎哥
2023/05/10
8290
【胖虎的逆向之路】02——Android整体加壳原理详解&实现
Android App启动优化深度实践 (由2.4s优化到1s以内)
我们的APP新版本,从2017年4月份提交第一行代码开始,就现在已经有两年半的时间,在这两年多的时间里,APP的内容内容不断丰富,例如先后加入了求职招聘、问答、个人中心、二手机,小视频等等模块。同时对于以前的旧功能也在不断地完善,例如,丰富了发帖的内容、小视频详情页像抖音一样方便快捷、标签的聚合更加精准的吸引用户。
Demo_Yang
2019/08/12
2.1K1
图解 | 一图摸清Android应用进程的启动
init进程fork出Zygote进程后,Zygote进程会创建一个服务端socket,等待AMS发起socket请求。
Holiday
2020/11/06
1K0
深入研究Android启动速度优化(上)- 看完这些启动优化已经完成80%了
启动是指用户从点击 icon 到看到页面首帧的整个过程,启动优化的目标就是减少这一过程的耗时。启动性能是 APP 使用体验的门面,启动过程耗时较长很可能导致用户使用 APP 的兴趣骤减。提高启动速度是每一个 APP 在体验优化方向上必须要做的关键技术突破。
Rouse
2024/05/09
2.2K0
深入研究Android启动速度优化(上)- 看完这些启动优化已经完成80%了
一篇文章读懂Android Framework
本文旨在将Framework的框架描绘出来,主要是记录我一段时间关于android framework的学习,希望抛砖引玉,对于读者有一定的帮助。
做个快乐的码农
2021/12/22
5.3K0
一篇文章读懂Android Framework
大型Bat面试知识总结分享—AMS在Android起到什么作用?简单的分析下Android的源码
相信大多数动脑同学对文章中提到的ActivityManagerService(以后简称AMS)都有所耳闻。
Android技术干货分享
2019/07/18
4.2K0
大型Bat面试知识总结分享—AMS在Android起到什么作用?简单的分析下Android的源码
深入理解Android中的startActivity过程
Activity应该是我们在日常开发中最熟悉的一个组件了,当我们在应用程序中启动一个新的Activity时,实际上是进行了一系列复杂的操作。本文将尽量以简化的方式梳理Android中startActivity的关键脉络,帮助读者更好地理解Android的Activity管理机制。
陆业聪
2024/07/23
5720
深入理解Android中的startActivity过程
Activity启动流程
Activity启动流程分两种,一种是启动正在运行的app的Activity,即启动子Activity。如无特殊声明默认和启动该activity的activity处于同一进程。如果有声明在一个新的进程中,则处于两个进程。另一种是打开新的app,即为Launcher启动新的Activity。后边启动Activity的流程是一样的,区别是前边判断进程是否存在的那部分。
用户1740424
2019/03/06
8970
Activity启动流程
Android面试题集:以前烂大街的四大组件-Activity,面试重提这些知识点你还记得吗?
虽然有很多面试的文章里都有这些题目,但是我每次在看的时候,总是会觉得有些分散,复习的时候还要重新去找到对应的文章,所以我就想着自己来整理一下,并且把题目给分一下类型;自己整理可以帮助我复习的同时还可以巩固一遍;这次主要是4大组件相关,后续我会继续整理,觉得有帮助的可以点个赞。
Android技术干货分享
2021/02/18
8460
Android面试题集:以前烂大街的四大组件-Activity,面试重提这些知识点你还记得吗?
Android 启动优化说明、黑白屏处理
Android 启动优化说明、黑白屏处理 前言 正文 一、启动来历 二、启动说明 1. 冷启动 2. 热启动 3. 温启动 4. 冷启动流程 5. 优化时间 6. 优化方案 三、黑白屏处理 1. 创
晨曦_LLW
2022/03/11
1.2K0
Android 启动优化说明、黑白屏处理
Android面试题之说说系统的启动流程(总结)
Boot Rom -> Boot Loader -> Kernel -> 启动Init进程 -> Zygote进程 -> system_server进程 -> 启动AMS、WMS、PMS等服务 -> AMS启动Launcher应用的home activity
AntDream
2024/06/13
1660
Android面试题之说说系统的启动流程(总结)
推荐阅读
相关推荐
从源码解析Android应用启动全流程:从点击图标到Activity渲染的深度剖析
更多 >
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档