Activity启动流程
名词解释说明:
Application OnCreate:加载第三方的sdk
Activity OnCreate:加载自身的逻辑;发送远程数据请求;渲染界面List;
响应时间
❖ app启动:⾸次安装启动、冷启动、暖启动、热启动
❖ app交互:事件响应、内部加载速度、⾸屏渲染
❖ 接口性能:dns、http/https、download、json
❖ h5性能:cache、资源加载、dom、page
app启动性能名称解释
❖ ⾸次安装启动:⾸次安装会耗费较多的时间初始化,⽐如补丁下载、缓存数据
❖ 冷启动:进程创建到app页面展示期间,对应与display之前的时间,这个时间参考很重要,对应Android建议时间:5S内,很重要;
❖ 暖启动:进程存在,界⾯不存在,就是应用后台呆太久内存被杀掉,这时重新启动app的过程就是暖启动(此时app部分信息还是保存在应用中没有被清空)。对应Android建议时间:2S内
❖ 热启动:界⾯对象仍然存在,应用在后台切换到前置的过程,对应Android建议时间:1.5S内
❖ ⾸屏启动:第⼀屏加载完整
❖ adb shell am force-stop com.xueqiu.android
❖ adb shell am start -S -W com.xueqiu.android/.view.WelcomeActivityAlias
❖ adb logcat |grep -i activitymanager.*Displayed
UI性能检测常⽤办法或工具
❖ adb logcat
❖ 录屏+视频拆帧
❖ uiautomator等⾃动化⼯具200ms巡检界⾯变化
❖ traceview
❖ 硬埋点
性能检测方案一:adb logcat
1、清除app数据
adb shell pm clear package_name(比如:package_name=com.xueqiu.android)
2、强制停掉应用
adb shell am force-stop package_name(比如:package_name=com.xueqiu.android)
3、统计时间
adb shell am start -S -W package_name/ActivityName(比如:package_name=com.xueqiu.android、activity_name=.view.WelcomeActivityAlias
-W 等待activity启动完成 -S 确保应用启动前先停掉)
4、展示activity 启动时间
adb logcat | findstr -i displayed
adb logcat 结果
startTime:记录刚准备调用startActivityAndWait()的时间点;
endTime:记录startActivityAndWait()函数调用返回的时间点;
WaitTime:startActivityAndWait()调用耗时
WaitTime = endTime-startTime
性能检测方案二 视频拆帧:ffmpeg拆帧,人工计算启动时间
ffmpeg官网下载
https://www.ffmpeg.org/download.html#build-windows
操作步骤:
1、强制关闭应用
adb shell am force-stop package_name(比如:com.xueqiu.android)
2、开启录制,指定手机端路径(原生路径)
adb shell screenrecord --bugreport --time-limit 20 /data/local/xueqiu.mp4
详解:data/local -->代表手机端路径
20 -->代表录制时间
3、查看activity活动页启动时间
adb shell am start -S -W com.xueqiu.android/.view.WelcomeActivityAlias
4、把手机端录制的文件,推送到电脑本地目录
adb pull /data/local/xueqiu.mp4 .
5、把本地录制的文件,转换成gif文件
ffmpeg -i xueqiu.mp4 xueqiu.gif
6、把录制文件拆帧,每1S拆为10帧且命名为frames_%03d.jpg格式
ffmpeg -i xueqiu.mp4 -r 10 tmp/frames_%03d.jpg
7、通过拆帧文件,统计待测试activity启动时间
详解:关注待启动activity点击帧到activity启动完成所需要帧数,总数*0.1就是耗时的秒数时间