app启动性能分析
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就是耗时的秒数时间
最新文章
- iOS开发使用半透明模糊效果方法整理
- MySQL版本升级之5.6到5.7
- coursera机器学习笔记-神经网络,初识篇
- 使用Struts 2框架实现文件下载
- webwork
- 【转载】关于Embedded Linux启动的经典问题
- jquery------.cycle的使用
- html5 (个人笔记)
- 改变WPF ListBoxItem的选中样式
- 神经网络学习-问题(二)-scipy未正确安装报DLL找不到的问题
- [jobdu]矩形覆盖
- [caffe]深度学习之图像分类模型VGG解读
- CSS居中的方法总结
- POJ-2386(深广搜基础)
- wordpress教程之函数讲解
- Dos.Common
- C#からネイティブDLLを呼び出す場合のVSからのデバッグのジレンマを解決する
- Java8之lambda表达式
- cf1042d 树状数组逆序对+离散化
- cocos2dx lua 绑定之一:自动绑定自定义类中的函数
热门文章
- Vulnhub之Credit_Card_Scammers靶场渗透
- elasticsearch之metric聚合
- [编程基础] C++多线程入门4-数据共享和资源竞争
- [深度学习] 经典深度学习模型及其微调(Caffe)总结
- [WPF]将方法设为弃用
- 抽奖动画 - 播放svga动画
- 腾讯出品小程序自动化测试框架【Minium】系列(二)项目配置及测试套件使用说明
- angular使用_HttpClient或者Fetch发送POST/GET请求下载/上传文件
- 字符输入流读取字符数据-writer类
- CoppeliaSim(原V-REP)教育版不给下载的解决方法