当前位置: 首页 > news >正文

Android 性能优化【篇五:应用启动分析流程】

本篇主要围绕Android性能优化,应用启动类性能问题为主题,先结合MTK的文档阐述应用启动流程,然后结合MTK的分析思路,其他厂商的思路,和我之前有段时间研究过某音的TOP300分析思路的案例,进行说明。

一、APP启动流程

所谓冷启动就是启动该应用时,后台没有该应用的进程,此时系统会为该应用创建新的进程,之后会bindApplication来创建程并初始化application, 然后通过反射执行ActivityThread中的main方法。

而热启动则是,当启动应用时,后台已经存在该应用的进程,比如启动该应用后,再按home 键反馈至主界面后,再打开该应用。此时会从已有的进程中来启动应用,这种方式不会重新走bindApplication的动作。

参考链接:https://online.mediatek.com/apps/quickstart/QS00157#QSS03755

1、冷启动

当我们点击桌面APP图标的时候,首先会调用launcher的onClick()方法,然后在桌面应用程序内部会通过添加intent.addflag(Intent.FLAG_ACTIVITY_NEW_TASK),调用Activity类的startActivity方法先pause前台的launcher,然后resume想启动想要启动的activity,直到新的应用程序启动成功,过渡动画结束为止。参考如下流程图:(PS:从MTK官方网站提取)

我们在看看如果一个应用启动,抓出来的trace是怎么样的呢?

仔细对比一下两者的差异,下面用文字进行解读和说明:

流程一:Launcher响应点击事件

当某应用程序在对某个activity声明MAIN和LAUNCHER之后,那么桌面应用程序Launcher就会把他们解析出来,对应图标排列在桌面。这样,用户就可以通过点击的方式启动Activity了。

当用户在桌面应用程序launcher上面点击某个应用ICON,那么launcher应用程序就得响应onClick事件,如何响应呢?

参考如上泳图,launcher调用startActivityForResult,最终会走到AMS中,主要逻辑实现还得是调用startActivityUnchecked方法,去启动目标activity。

PS:这属于阶段一上半段流程

流程二:WMS启动过渡动画

如上流程图在Launcher向AMS发起startActivityForResult之后,就得通知WMS调用StartingWindowEnterAnimation方法启动窗口(Starting Window,俗称“白屏”或“预览屏”)进入屏幕的动画阶段:

  • 背景:当用户点击 App 图标后,系统需要时间去 Zygote 进程 fork 出一个新的进程,并加载类、初始化 Application。这个过程通常需要几百毫秒甚至更久。
  • 目的:为了不让用户觉得“点击没反应”或者看到黑屏,WMS(Window Manager Service)会立即根据 App 的主题(Theme)创建一个临时的、轻量级的窗口。这个窗口通常只包含状态栏、导航栏和 App 的 Logo 或背景色。
  • 动作:圈红的部分表示 WMS 正在将这个临时窗口以动画的形式(通常是淡入或缩放)显示在屏幕上。这就是你在点击图标后,App 界面出来之前看到的那个瞬间画面。

当流程走到红框这一步时,WMS 已经完成了“准备”工作,并且正在屏幕上播放启动窗口的进入动画。这是 Step 1(响应时间)用户体验的关键组成部分——让用户感觉到系统已经迅速响应了点击操作。

2、冷启动

3、热启动

http://www.jsqmd.com/news/931456/

相关文章:

  • vue父子组件通信(二)祖先调用provide / inject(1)vue2
  • 2026四川文旅局备案导游TOP5推荐|正规持证金牌向导官方可查安心出行,专业趣味讲解 - 随峰国旅
  • 福州鼓楼东街口|专业回收钻戒,实体门店放心交易 - 奢侈品回收测评
  • 别再只盯着20/60了!用Backtrader回测SMA双均线,手把手教你找到最适合你的周期参数
  • 3分钟定位热键冲突:Hotkey Detective精准排查方案
  • 2026中国超声波泥位计源头厂家权威推荐榜:从技术实力到工程选型的全景解析 - 仪表品牌排行榜
  • 高性能本地AI字幕生成系统:架构设计与实现原理
  • 网盘直链下载助手:告别限速,实现满带宽下载的终极解决方案
  • 如何用ZonyLrcToolsX三分钟解决音乐库歌词缺失难题?
  • AI-HF_Patch终极指南:5步解锁AI少女完整游戏体验
  • MySQL 8.0教学资源包:26讲PPT课件+配套可运行PHP/SQL代码,含安装配置、查询优化、存储过程、权限控制、主从复制与三个实战项目
  • 避开这些坑!STM32G473 Bootloader开发中CAN/USART升级的5个常见问题与调试心得
  • ibaPDA 7.0.1安装包:支持S7-1200/1500实时曲线监控、故障触发捕获与离线数据分析
  • 药食同源变“智商税”?AI辨体如何用技术撕开政策死结
  • 2026北京配眼镜推荐,到底要花多少,五家店配镜账单全公开 - 配眼镜新资讯
  • 麒麟V10系统4K屏字体太小?三步搞定Mate桌面DPI缩放(实测有效)
  • 2026 温州装修公司避坑指南|选对家装,省心装出理想家 - 速递信息
  • C++11并发编程:call_once一次性执行+atomic原子类型+CAS无锁编程+自旋锁
  • Meshroom:从照片到3D模型的魔法转换,免费开源工具让创作更简单
  • 你的GPU散热真的够吗?深度学习炼丹党必看的温控监控与预警设置指南(以Ubuntu/NVIDIA为例)
  • 3D质感革命:5分钟掌握NormalMap-Online免费在线法线贴图生成器终极指南
  • 2026年只会C语言就业很差吗 C语言真的要完了吗?
  • 3种高效方法:利用OCAuxiliaryTools彻底解决黑苹果配置难题
  • B站m4s视频转换终极指南:一键将缓存视频转为MP4格式
  • 51单片机四则运算计算器完整Keil工程:矩阵键盘输入+数码管显示(含源码与HEX)
  • 越南MobiFone MFY99套餐取消全攻略:短信与App双通道详解
  • 保姆级教程:用LeRobot复现斯坦福ALOHA的ACT算法,搞定双臂分拣任务
  • STM32F103RE裸机FTP方案:88W8801 WiFi AP模式 + W25Q128文件存储
  • SourceGit:跨平台Git图形化客户端终极指南,让Git操作变得简单直观
  • AI都能一键生成网站了,还要建站系统干嘛?