Android Version: 6.0及以上 Platform: 通用

1. 介绍

此篇文章将介绍如何通过systrace来分析在launch界面click一个app的icon后app的启动时间,包括了animation off和animation on的情况,以google music应用为例。

2. 寻找InputReader–>AppLaunch_dispatchPtr:Down

根据Android系统事件传递的机制,第一步先找到frameworks层中事件出现的源头,就是在InputReader进程中的AppLaunch_dispatchPtr:Down这个动作。

下方可以看到其时间

3. 寻找InputReader–>AppLaunch_dispatchPtr: Up

然后找到click事件弹起的那个时间点:



这里看到down和up之间相差了19ms左右,这是因为手动点击时的迟滞时间导致,而每次操作这个值都可能不同。app的launch time应该以up为起始。

4. 寻找Launcher接收到Down事件

然后click事件会从frameworks中分发到launcher界面

5. 寻找Launcher接收到Up事件,up在down的后面


6. Launcher响应click事件

7. Launcher开始通过AM去启动Activity


8.寻找WindowManager中的绘制start window的时间


这里有个经验可以参考,一般在systrace的图形中,WindowManager的start在InputReader的后上方

先找到wmAddStarting的时间


再看下绘制结束的时间

9. 寻找surfaceflinger最终送帧的时间点


到这一步就是animation off情况下,启动music的第一帧的上层显示时间,也就是说如果关闭了启动动画,那么第一帧就是WindowManager绘制出的白屏画面。 如果从down开始计算是408.558-196.164=212.394,因为手动down的误差较大,如果从up时间开始算就是408.558-215.671=192.887ms。在animation on的情况下,情况又不同了,在以上的基础上还会走app的启动动画,接着来看。

10. 寻找music进程绘制ui的时间

先找到music进程的图形


然后找到finishiDraw


这里就可以计算出music绘制完第一帧的时间,然后继续查看附近的surfaceflinger的送帧时间


这里就可以计算出music应用绘制和显示第一帧花了多少时间
2518.475-408.558=2109.917ms
加上前面绘制startWindow的时间就可以算出总时间

参考地址:http://chendongqi.me/2017/02/18/systrace_appLauncher/

Systrace分析app启动分析相关推荐

  1. iOS APP启动分析篇——启动时间测试

    APP中业务的更新迭代,使APP变得越来越丰富,越来越复杂,这时可能会导致APP启动耗时,我们都希望APP在功能强大的同时,性能也能保持优越的跑分,能够给用户带来更好的体验.这篇文章将介绍APP启动流 ...

  2. Tomcat8源码分析系列-启动分析(四) webapp

    前言 上一篇文章中我们分析了 Service.Engine.Host.Pipeline.Valve 组件的启动逻辑,在 HostConfig 中会实例化 StandardContext,并启动 Con ...

  3. APP启动方式分析——冷启动、热启动、温启动

    APP启动分析 Cold start At the beginning of a cold start, the system has three tasks. These tasks are: 1. ...

  4. Android App启动流程详解

    前言:在之前的文章中已经写了apk的打包流程.安装流程,今天就是梳理一下apk系列的最后的流程--app启动流程.经过今天的梳理以后咱们就可以对apk包是怎么编译生成的.apk是怎么被安装到安卓手机的 ...

  5. 分析启动耗时 android,Android app启动耗时分析

    首先编译你的程序,打开Android Studio里面的Android Monitor,找到下图的按钮 <img src="//bbsm ...

  6. 移动端测试 APP启动性能分析 WebView性能分析 H5性能分析 卡顿分析 帧分析 CPU统计 网络流量分析 耗电量指标 弱网测试 健壮性测试 兼容性测试 Amdahl

    Android官网使用指南性能:https://developer.android.com/topic/performance 一.APP启动性能分析 APP的启动过程 调用起APP.创建一个空白窗口 ...

  7. Android Bug分析系列:第三方平台安装app启动后,home键回到桌面后点击app启动时会再次启动入口类bug的原因剖析...

    前言 前些天,测试MM发现了一个比较奇怪的bug. 具体表现是: 1.将app包通过电脑QQ传送到手机QQ上面,点击安装,安装后选择打开app (此间的应用逻辑应该是要触发 [闪屏页Activity] ...

  8. Android 系统性能优化(21)---App启动原理分析及启动时间优化

    一.启动原理解析 Android是基于Linux内核的,当手机启动,加载完Linux内核后,会由Linux系统的init祖先进程fork出Zygote进程,所有的Android应用程序进程以及系统服务 ...

  9. 03-20 专项测试-APP 启动性能分析

    Activity 启动流程 Application OnCreate 加载第三方的 sdk Activity OnCreate 加载自身的逻辑 发送远程数据请求 渲染界面 APP 启动性能指标 冷启动 ...

  10. Android 12 新APP启动画面(SplashScreen API)简介源码分析

    以往的启动画面 默认情况下刚启动APP时会显示一会白色背景 如果把这个启动背景设置为null,则一闪而过的白色会变成黑色 如果把启动Activity设置为背景透明[< item name=&qu ...

最新文章

  1. 托马斯·弗里德曼:美政府应研究任正非的提议
  2. 入门讲解HTML5的画布功能(1)
  3. [Java基础]让Map value自增
  4. selenium之如何等待页面元素加载完成
  5. WPS版excel怎样核对两表数据和文本不一致之处
  6. 无忧计算机c语言二级题库,干货for计算机等级考试题库:二级C语言试题
  7. deprecated conversion from string constant to ‘char*’
  8. win11任务栏怎么更换颜色 win11任务栏更换颜色的设置方法
  9. easymock参数_EasyMock捕获参数
  10. SAP HANA Express Edition (HXE)-二进制安装使用步骤
  11. 【2022最新】最新桌面CPU显卡天梯图
  12. 基于ASP.NET的网上驾校管理系统设计与实现
  13. win7添加java环境变量path_Win7怎么配置Java环境变量?
  14. LZJ流体质量计算机价格,LZJ-ⅢC型流体质量计算机全解.doc
  15. 国内工业机器人发展水平综述
  16. 操作系统教程第六版——第三章课后作业
  17. 计算机瑞士留学经验,瑞士留学你可能会遇到的问题详解
  18. linux 访问外网设置von,如何配置Linux服务器,才能远程访问Xwindow呢?
  19. Java中的数组Array
  20. Html5(H5)是什么?

热门文章

  1. node.js小工具--修改Xcode 'Create by'作者名称
  2. 每秒处理10万高并发订单的乐视集团支付系统架构分享
  3. 基于分布式锁的分布式定时任务实现
  4. input 禁止 复制 粘贴 剪切 操作
  5. android -------- 打开本地浏览器或指定浏览器加载,打电话,打开第三方app
  6. 独角兽复活:Twilio上市预示IPO市场起死回生
  7. MySQL类型float double decimal的区别
  8. MYSQL服务器my.cnf配置文档详解
  9. ubuntu系统配置双网卡方法
  10. Linux tree 命令乱码