App启动性能分析

1.基本的测试cheklist和手段

但不限于这些,具体的是根据业务来决定的
2.专项测试(用户维度)
  • 崩溃(Crash,弱网)
  • 卡顿(掉帧、gc、cpu)
  • 响应慢(启动时间、交互时间、H5加载)
  • 发热(cpu,mem、io、network、gps等硬件的使用)
  • 掉电快(硬件占用)
  • 兼容性问题(机型覆盖、回归)
3.app启动
app性能,有的app还有与app之间的交互,比如app中去用微博、微信等登录的场景, App交互的时候可以指定任意activity,activity之间的耦合性是很小的
android官方的图如下:activity启动流程
 
 
第一件事:启动
   第一步底层系统(可能是linux,安卓主要依赖于linux系统)启动app
   第二步调起activity,创建白窗口什么都不做
   第三步启动进程
第二件事:启动object,加载
  启动一个object,onCreate,类似于去调用对象,紧接着去创建一个Mainthread,创建一个主线程;主要用来加载我们的activity,mainacticity(用来做页面的初始化,数据初始化,页面的渲染),到了displayed time的时候已经渲染完成,会对前面打开的空白窗口进行对调(要记住)
other stuff 可能页面已经加载完了 但是还没有加载完全,还有一个动态加载的过
这整个过程是非常快的
 
主要流程:
app启动性能指标:
  • 冷启动
  • 暖启动
  • 热启动
  • 首屏启动
各指标描述如下
冷启动:重新安装进行启动等,冷对应已经被kill掉了,重新启动,冷启动对应的就是上面分析的打开app的一个过程,不包括other stuff 一定要记住(场景:数据全被清掉了,或者重新安装启动)
热启动:说明app还活着,放在后台运行,去微信聊天再回来
暖启动:app在后台待得时间久了,可能系统已经杀掉了app内存,用户此时再重启app,其实会有一些object进行保留;初始化的时候会把加载的东西保存在手机上(这些并不会完全丢掉)
首屏启动:就是加上other stuff
最重要的是冷启动!!因为暖启动和热启动本来时间就很短,不需要优化了;首屏启动
建议时间只是做参考,没有太大意义
录制1秒进行拆成10帧,可以计算首屏启动的时间;adb logcat只能计算首屏之前的时间,因此只能查看activity的加载时间,所以是不准确的
traceview是安卓的一个分析工具,了解即可
硬埋点:要求开发人员,在app启动之前加一个卖点,启动完成之后,结束埋点将数据回传到服务器,将埋点结束时间回传至服务器,需要开发人员配合,通常不经常采用
-s就是启动前先停掉,为了保险
-w等待activity启动完成 
package=com.xueqiu.android
adb shell pm clear $package
adb shell am force-stop $package s
adb shell am start -S -W $package/.view.WelcomeActivityAlias(手动启动和使用命令是差不多的)
adb logcat|grep -i displayed

如下为运行结果:
Total time是最重要的this time和Total time是一样的
wait time稍微长一点,它是受系统的操作快慢的影响 
首先需要下载 ffmpeg工具,然后执行以上命令:
Mac用&符号可以后台运行
下载下来:. 表示下载到本地当前目录
拆帧 也可以使用自己的拆帧工具这里推荐使用ffmpeg -r 10就是一秒拆成10帧 
具体步骤,将app启动的视频保存到本地,拆成图片并查看从页面启动到启动完成,一共是多少张图片,图片数目n/10(1秒拆成10帧)就是最后的app启动时间
 

猜你喜欢

转载自www.cnblogs.com/zhaikunkun/p/12821002.html
今日推荐