Systrace分析app启动分析
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启动分析相关推荐
- iOS APP启动分析篇——启动时间测试
APP中业务的更新迭代,使APP变得越来越丰富,越来越复杂,这时可能会导致APP启动耗时,我们都希望APP在功能强大的同时,性能也能保持优越的跑分,能够给用户带来更好的体验.这篇文章将介绍APP启动流 ...
- Tomcat8源码分析系列-启动分析(四) webapp
前言 上一篇文章中我们分析了 Service.Engine.Host.Pipeline.Valve 组件的启动逻辑,在 HostConfig 中会实例化 StandardContext,并启动 Con ...
- APP启动方式分析——冷启动、热启动、温启动
APP启动分析 Cold start At the beginning of a cold start, the system has three tasks. These tasks are: 1. ...
- Android App启动流程详解
前言:在之前的文章中已经写了apk的打包流程.安装流程,今天就是梳理一下apk系列的最后的流程--app启动流程.经过今天的梳理以后咱们就可以对apk包是怎么编译生成的.apk是怎么被安装到安卓手机的 ...
- 分析启动耗时 android,Android app启动耗时分析
首先编译你的程序,打开Android Studio里面的Android Monitor,找到下图的按钮 <img src="//bbsm ...
- 移动端测试 APP启动性能分析 WebView性能分析 H5性能分析 卡顿分析 帧分析 CPU统计 网络流量分析 耗电量指标 弱网测试 健壮性测试 兼容性测试 Amdahl
Android官网使用指南性能:https://developer.android.com/topic/performance 一.APP启动性能分析 APP的启动过程 调用起APP.创建一个空白窗口 ...
- Android Bug分析系列:第三方平台安装app启动后,home键回到桌面后点击app启动时会再次启动入口类bug的原因剖析...
前言 前些天,测试MM发现了一个比较奇怪的bug. 具体表现是: 1.将app包通过电脑QQ传送到手机QQ上面,点击安装,安装后选择打开app (此间的应用逻辑应该是要触发 [闪屏页Activity] ...
- Android 系统性能优化(21)---App启动原理分析及启动时间优化
一.启动原理解析 Android是基于Linux内核的,当手机启动,加载完Linux内核后,会由Linux系统的init祖先进程fork出Zygote进程,所有的Android应用程序进程以及系统服务 ...
- 03-20 专项测试-APP 启动性能分析
Activity 启动流程 Application OnCreate 加载第三方的 sdk Activity OnCreate 加载自身的逻辑 发送远程数据请求 渲染界面 APP 启动性能指标 冷启动 ...
- Android 12 新APP启动画面(SplashScreen API)简介源码分析
以往的启动画面 默认情况下刚启动APP时会显示一会白色背景 如果把这个启动背景设置为null,则一闪而过的白色会变成黑色 如果把启动Activity设置为背景透明[< item name=&qu ...
最新文章
- 托马斯·弗里德曼:美政府应研究任正非的提议
- 入门讲解HTML5的画布功能(1)
- [Java基础]让Map value自增
- selenium之如何等待页面元素加载完成
- WPS版excel怎样核对两表数据和文本不一致之处
- 无忧计算机c语言二级题库,干货for计算机等级考试题库:二级C语言试题
- deprecated conversion from string constant to ‘char*’
- win11任务栏怎么更换颜色 win11任务栏更换颜色的设置方法
- easymock参数_EasyMock捕获参数
- SAP HANA Express Edition (HXE)-二进制安装使用步骤
- 【2022最新】最新桌面CPU显卡天梯图
- 基于ASP.NET的网上驾校管理系统设计与实现
- win7添加java环境变量path_Win7怎么配置Java环境变量?
- LZJ流体质量计算机价格,LZJ-ⅢC型流体质量计算机全解.doc
- 国内工业机器人发展水平综述
- 操作系统教程第六版——第三章课后作业
- 计算机瑞士留学经验,瑞士留学你可能会遇到的问题详解
- linux 访问外网设置von,如何配置Linux服务器,才能远程访问Xwindow呢?
- Java中的数组Array
- Html5(H5)是什么?