您当前的位置:首页 > 电脑百科 > 程序开发 > 移动端 > Android

Android App启动时间测试方法总结

时间:2019-08-01 14:18:15  来源:  作者:

查看当前界面Activity的方法:

1)运行命令:adb shell dumpsys window | findstr "mCurrentFocus"

mCurrentFocus=Window{227cb04 u0 com.oppo.music/com.oppo.music.MainListActivity}

 

从结果中可知:

当前应用包名:com.oppo.music

当前界面Activity:com.oppo.music.MainListActivity

2)查看应用的PID

adb shell ps | findstr “com.oppo.music”,找到PID对应的列

Android App启动时间测试方法总结

 

1、“高速摄像机或iphone慢动作”查看应用的启动时间

1)使用高速相机或Iphone的慢动作(240ps)录制应用的启动视频

2)使用QucikTime的帧分析功能,确定好起始帧(手指按下抬起时)和结束帧(应用完全显示)

3)根据帧数计算启动时间:=1000*帧数量/240

备注:最接近真实用户使用场景,但是操作复杂,成本高

2、“ActivityManager”查看应用的启动时间

备注:系统main log中也会有对应的显示(或adb shell logcat -b main | findstr ActivityManager)更佳

1)运行结果:

04-19 15:13:25.919 1181 1216 I ActivityManager: Displayed com.oppo.music/.MainListActivity: +677ms

04-19 15:13:33.556 1181 1216 I ActivityManager: Displayed com.oppo.music/.MainListActivity: +660ms

677ms和660ms就是music应用的启动时间

 

Android App启动时间测试方法总结

 

3、“WaitTime”查看应用的启动时间

测试方法:adb shell am start -W –S packagename/MainActivity命令

1)结果时间说明

ThisTime:一连串启动Activity的最后一个Activity开始算起始时间

TotalTime:一连串启动Activity的第一个Activity开始算起始时间

WaitTime:总的耗时,但是包括前一个应用 Activity pause 的时间和新应用启动的时间

说明:例如有的应用启动Activity的时候,会先显示一个白色的Activity,然后在显示正常Activity,这个时候TotalTime就是从第一个Activity启动作为起始时间,如果只有一个Activity则ThisTime和TotalTime相等

总结:

如果只关心某个应用自身启动耗时,参考TotalTime;如果关心系统启动应用耗时,参考WaitTime;如果关心应用有界面Activity启动耗时,参考ThisTime

 

Android App启动时间测试方法总结

 

4、“am_activity_launch_time”查看应用启动时间

测试方法:

1)开启系统的moblie log,例如mtk的moblie log,然后启动应用(或者adb shell logcat -b events | findstr am_activity_launch_time)

2)从moblie log中找到类似如下的event log:events_log_3__2019_0418_152200

3)搜索关键词:“am_activity_launch_time”,然后匹配对应的包名,如下:

04-18 15:21:28.365484 1181 1216 I am_activity_launch_time: [0,73476478,com.oppo.music/.MainListActivity,668,668]

04-18 15:21:37.295923 1181 1216 I am_activity_launch_time: [0,231925826,com.oppo.music/.MainListActivity,680,680]

4)应用的启动时间为668ms、680ms

 

Android App启动时间测试方法总结

 

5、Systrace查看应用的启动时间

1)抓取应用启动的trace文件

a、开发给的Python脚本抓取,需要安装对应的python

 

Android App启动时间测试方法总结

 

b、打开Android自带的monitor工具抓取,需要安装JAVA环境和android sdk包

 

Android App启动时间测试方法总结

 

 

Android App启动时间测试方法总结

 

2)chrome浏览器输入chrome://tracing/,然后load对应的trace文件

 

Android App启动时间测试方法总结

 

3)搜索iq,如果能搜到说明正确抓取了trace文件,否则没有抓到启动时间点

 

Android App启动时间测试方法总结

 

 

4)找到应用对应的PID或包名的那一行

 

Android App启动时间测试方法总结

 

 

 

5)找到UI Thread那一行,然后可以使用【W】放大,【S】缩小,【A】左移,【S】右移,注意界面上的操作导航,需要选取对应的项才能使用快捷键

放大并移动找到activityStart那一列,选中该项并点击键盘【m】键可以查看阶段时间如下:

 

Android App启动时间测试方法总结

 

 

6)在activityStart下一行对应的handleLaunchActivity找到第一个draw,按下【ctrl】然后选中activityStart在选中draw,在按下【m】键,如下图:

 

Android App启动时间测试方法总结

 

 

 

7)从步骤5中可以看到,music的启动时间为458.656ms

备注:界面快捷键操作

Android App启动时间测试方法总结

 

 

Android App启动时间测试方法总结

 

 

6、adb脚本录屏方法(不一定有用,有的机器无该命令或–bugreport选项,且需要android API21+)

测试方法:

1)adb shell screenrecord –bugreport /sdcard/test.mp4

2)使用QuickTime分析视频即可,同方法1

备注:查看是否支持-bugreport选项

使用 adb shell screencap –help查看是否支持—bugreport选项

7、各种方法测试数据比较

Android App启动时间测试方法总结

 

 



Tags:Android 启动时间测试   点击:()  评论:()
声明:本站部分内容及图片来自互联网,转载是出于传递更多信息之目的,内容观点仅代表作者本人,如有任何标注错误或版权侵犯请与我们联系(Email:2595517585@qq.com),我们将及时更正、删除,谢谢。
▌相关推荐
查看当前界面Activity的方法:1)运行命令:adb shell dumpsys window | findstr "mCurrentFocus"mCurrentFocus=Window{227cb04 u0 com.oppo.music/com.oppo.music.MainListActiv...【详细内容】
2019-08-01  Tags: Android 启动时间测试  点击:(465)  评论:(0)  加入收藏
▌简易百科推荐
今天面试遇到同学说做过内存优化,于是我一般都会问那 Bitmap 的像素内存存在哪?大多数同学都回答在 java heap 里面,就比较尴尬,理论上你做内存优化,如果连图片这个内存大户内存...【详细内容】
2021-12-23  像程序那样思考    Tags:Android开发   点击:(8)  评论:(0)  加入收藏
Android logcat日志封装logcat痛点在Android开发中使用logcat非常频繁,logcat能帮我们定位问题,但是在日常使用中发现每次使用都需要传递tag,并且会遇到输出频率很高的log,在多...【详细内容】
2021-12-22  YuCoding    Tags:Android   点击:(8)  评论:(0)  加入收藏
对项目的基本介绍 1.整个框架主要是给MVVM框架使用的,自己写完interface接口后,通过自定义的注解就能自动生成接口方法 2.用Kotlin的Flow去代替Rxjava,因为我发现RxJava功能很...【详细内容】
2021-12-08  网易Leo    Tags:Android开发   点击:(17)  评论:(0)  加入收藏
前言在Android开发过程中,有些时候会根据需要引用别的项目到当前项目里面,而且以Module形式引用。所以本篇博文就来分享一下怎么以Module形式引用别的项目到当前项目中,方便开...【详细内容】
2021-12-07  网易Leo    Tags:Android开发   点击:(22)  评论:(0)  加入收藏
作者:fundroid这篇文章偏阅读一些,大家可以了解下 Android 的一些最新动向。每年9/10月份 Google 都会举行约为期2天的 Android Dev Summit,在活动上 Google 的技术专家们会分...【详细内容】
2021-11-30  像程序那样思考    Tags:Android开发   点击:(15)  评论:(0)  加入收藏
一、 准备工作1、安装JDK,下载地址(可能需要一个oracle账号,大家百度一下或者自行注册一个就行。尽可能选择8或者11,这两个是长期版本)Java SE | Oracle Technology Network | Or...【详细内容】
2021-11-23  永沧    Tags:Android   点击:(28)  评论:(0)  加入收藏
使用Maven Publish Plugin插件。(官方支持)一、在Library的build.gradle中配置plugins { id 'com.android.library' id 'kotlin-android' id 'k...【详细内容】
2021-11-05  羊城小阳    Tags:Android   点击:(37)  评论:(0)  加入收藏
谷歌离推出Play Store应用程序的新数据隐私部分又近了一步。应用程序开发人员现在可以通过谷歌在Play控制台的新 "数据安全表 "填写相关细节。该公司表示,所需信息将从2022年...【详细内容】
2021-10-20    中关村在线  Tags:安卓   点击:(58)  评论:(0)  加入收藏
架构究竟是什么?如何更好的理解架构?我们知道一个APP通常是由class组成,而这些class之间如何组合,相互之间又如何产生作用,就是影响这个APP的关键点。细分的话我们可以将其分为类...【详细内容】
2021-09-17  像程序那样思考    Tags:Android架构   点击:(52)  评论:(0)  加入收藏
概述当Android应用程序需要访问设备上的敏感资源时,应用程序开发人员会使用权限模型。虽然该模型使用起来非常简单,但开发人员在使用权限时容易出错,从而导致安全漏洞。本文中,...【详细内容】
2021-09-07  SecTr安全团队    Tags:Android开发   点击:(66)  评论:(0)  加入收藏
最新更新
栏目热门
栏目头条