这篇文章主要介绍在做启动优化的时候,会用到那些工具。
一,启动时间的测量方式
有两种方式,分别为 ADB命令 和 手动打点 。
adb命令
命令格式“ adb shell am start -W packagename/首屏Activity ”, 如下:
时间:
(1)ThisTime:最后一个Activity启动耗时
(2)TotalTime:所有Activity启动耗时
(3)WaitTime:AMS启动Activity的总耗时
三者的关系是:ThisTime <= TotalTime <= WaitTime
缺点:
(1)线下使用方便,但是不能带到线上。
(2) ADB 命令输出的时间,并非是严谨,精确的时间。
手动打点
手动打点的意思是,在被测量代码的前面设置一个点(记录时间),在测量代码后面设置另一个点(减去初始记录的时间)。通常用系统提供的方法:“ System.currentTimeMillis() ” 来记录时间。
手动打点,就是记录时间在 log 日志里,这个时间是比较精确的,也可以在线上使用。
MultiDex类库
这个工具是用来检查方法是否超标。在android5.0之前,每一个android应用中只会含有一个dex文件,但是这个dex的方法数量被限制在65535之内,这就是著名的64K(64*1024)事件。为了解决这个问题,Google官方推出了这个类似于补丁一样的support-library,MultiDex。
二,启动优化的工具
主要有两个:TraceView 和 SysTrace。
工具1:TraceView
(1)图形的形式展现执行时间,调用栈等。
(2)信息全面,包含所有线程。
使用方式:
(1)在被监视的代码开始处:Debug.startMethodTracing("AppTrace");
(2)在被检查的代码结束地方添加:Debug.stopMethodTracing();
(3)文件目录在“storage/sdcard0/Android/data/包名/files/AppTrace.trace”,在Android studio中直接双击这个文件即可。
如下:
时间的关系: Total = self + children
Wall Clock Time 时间: 程序执行的时间,包括CPU执行的时间,比如拿不到锁,等待的时间
Thread Time 时间: CPU执行的时间,
总结:
(1)运行时开销严重,整体都会变慢
(2)可能会带偏优化方向。有的函数本来是不耗时的,加上traceView后,耗时10倍。
(3)traceview 与 cpu profiler。现在的Android studio 使用的是cpu profiler工具了,traceview最大的好处是在代码中埋点。
工具2:systrace
简介
(1)结合Android内核的数据,生成Html报告。
(2)须在API 18以上使用,推荐TraceCompat。
在被测代码的开始处:TraceCompat.beginSection("AppCreate");
在被测代码的结束处:TraceCompat.endSection();
在 Android studio 上点击安装程序到Android设备上;
使用方式
(1)python systrace.py -t 10 [other-options] [categories]
(2)官网地址:https://developer.android.com/studio/command-line/systrace
使用命令:
python D:\02_android\08_androidStudio\Sdk\platform-tools\systrace\systrace.py -b 32768 -t 5 -a com.optimize.performance -o performance.html sched gfx view vm am app
总结
(1)轻量级,开销小
(2)直观反映CPU利用率