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就是耗时的秒数时间

app启动性能分析的更多相关文章

  1. Android app启动耗时分析

    前言 app启动耗时过长的话,无论你的app里面的内容多么丰富有趣,作为一个用户,首先是没有耐心去等待的,如果我是一个用户,我会这样想:这是什么垃圾公司出的什么烂app,再等2s不进来就卸载,黑人问号 ...

  2. iOS App 启动性能优化

    1. App启动过程 解析Info.plist 加载相关信息,例如如闪屏 沙箱建立.权限检查 Mach-O加载 如果是胖二进制文件,寻找合适当前CPU类别的部分 加载所有依赖的Mach-O文件(递归调 ...

  3. VS2012中启动性能分析 独占样本数的分析

    http://www.cnblogs.com/TianFang/archive/2012/11/18/2776266.html

  4. 专项测试-App性能分析

    专项测试 app性能 Activity是Android组件中最基本也是最为常见用的四大组件(Activity,Service服务,Content Provider内容提供者,BroadcastRece ...

  5. Android5 Zygote 与 SystemServer 启动流程分析

    Android5 Zygote 与 SystemServer 启动流程分析 Android5 Zygote 与 SystemServer 启动流程分析 前言 zygote 进程 解析 zygoterc ...

  6. 马蜂窝 iOS App 启动治理:回归用户体验

    增长.活跃.留存是移动 App 的常见核心指标,直接反映一款 App 甚至一个互联网公司运行的健康程度和发展动能.启动流程的体验决定了用户的第一印象,在一定程度上影响了用户活跃度和留存率.因此,确保启 ...

  7. VS2010自带的性能分析工具分析.NET程序的性能

    这篇博文给大家分享的是,如何使用VS自带的性能分析工具来分析我们编写的.NET程序,一边找出程序性能的瓶颈,改善代码的质量.在实际开发中,性能真的很重要,往往决定一个产品的生死~良好的用户体验的基础之 ...

  8. 女儿拿着小天才电话手表问我App启动流程

    前言 首先,new一个女儿, var mDdaughter = new 女儿("6岁","漂亮可爱","健康乖巧","最喜欢玩小天 ...

  9. Android APP性能分析方法及工具

    近期读到<Speed up your app>一文.这是一篇关于Android APP性能分析.优化的文章.在这篇文章中,作者介绍他的APP分析优化规则.使用的工具和方法.我觉得值得大家借 ...

  10. App 性能分析

    关键因素: ---- Instrument 性能分析神器 1. 启动时间 应用启动时间长短对用户第一次体验至关重要,同时系统对应用的启动.恢复等状态的运行时间也有严格的要求,在应用超时的情况下系统会直 ...

随机推荐

  1. 用 while 生成猜数字

    import java.util.Random; import java.util.Scanner; public class zy2 { public static void main(String ...

  2. NSSCTF_HUBUCTF的web部分题解

    checkin 题目: 主要是php弱比较和序列化知识点考察 <?php $username = "this_is_secret"; $password = "th ...

  3. 网络监测工具之Zabbix的搭建与测试方法(三) ---Zabbix Agent

    安装客户端 在官方网站下载最新版本zabbix agent v6.2.6,然后默认安装,其中配置服务端的界面如下图: 其他一律默认即可. 启用发现功能 如上图所示,开启发现规则,默认搜索zabbix ...

  4. 封装 avm 组件经验分享

    avm.js 是一个跨端开发框架,AVM(Application-View-Model)前端组件化开发模式基于标准Web Components组件化思想,提供包含虚拟DOM和Runtime的编程框架a ...

  5. 分享自己亲测过的Visualstudio 2019中开发Typescript时,设置自动编译生成js,无需手工运行命令生成的方法。

    步骤1)右键web项目,添加 tsconfig.json文件. 步骤2)确保配置如下,编译版本可自行设置,这里主要关注编译目标目录和自动编译设置: { "compileOnSave" ...

  6. [编程基础] Python随机数生成模块总结

    Python随机数生成模块教程演示如何在Python中生成伪随机数. 1 介绍 1.1 随机数字生成器 随机数生成器(RNG)生成一组在外观上不显示任何可区分模式的值.随机数生成器分为两类:硬件随机数 ...

  7. Android applink 踩坑指南

    Android applink 踩坑指南 原理 接入步骤 将链接与activity关联起来 加入meta data 生成身份验证JSON 真机测试 结论 官方文档 原理 与url scheme不同的地 ...

  8. 一文读懂 Kubernetes 存储设计

    在 Docker 的设计中,容器内的文件是临时存放的,并且随着容器的删除,容器内部的数据也会一同被清空.不过,我们可以通过在 docker run 启动容器时,使用 --volume/-v 参数来指定 ...

  9. 推荐一款在浏览器编辑`Blazor`的`IDE`

    不知道是否有Blazor用户羡慕过React或者Vue用户,在一些组件库中,它们就提供了在当前的组件预览对于组件的实时编辑并且预览? 比如semi-design的这种 在比如codepen这种 由于B ...

  10. Solon 的插件热插拨管理机制(H-Spi)

    插件热插拨管理机制,简称:H-Spi.是框架提供的生产时用的另一种高级扩展方案.相对E-Spi,H-Spi 更侧重隔离.热插热拨.及管理性. 应用时,是以一个业务模块为单位进行开发,且封装为一个独立插 ...