Systrace
Systrace是一个系统级的性能检测工具,App开发者可以利用它完成一些深层次的性能检测。
初始化
Systrace的初始化有两种方式,下面笔者将分别进行介绍。
In DDMS
Systrace工具已经在DDMS中有集成了,打开DDMS可以找到启动Systrace的按钮,如图6.20所示。
图6.20 启动Systrace
点击该按钮,弹出如图6.21所示的界面。
图6.21 Systrace配置
这里主要使用默认配置,采集的数据可以在下面进行选择。同时,还可以设置采集的时间段。点击“OK”按钮后即可开始采集,由于Systrace抓取的信息非常多,因此这里只设置了5s的时间段。
数据采集完毕后,在保存路径下就会生成对应的trace.html文件,用浏览器打开后,如图6.22所示。
图6.22 Systrace数据结果
数据量确实非常大,要查看这个页面,还是需要一些小技巧的。
- 缩放:通过W、S可以控制页面的缩放。
- 滑动:通过A、D可以对页面进行滑动。
如果开发者对快捷键不熟悉,可以查看Systrace的帮助,点击右上角的“?”即可,如图6.23所示。
图6.23 Systrace操作方法
Systrace因为SDK版本的不同可能会有不同,但大体上还是类似的。如图6.24和图6.25所示,分别是r21版本的platform-tools生成的Systrace和r23版本生成的Systrace。
图6.24 r21版本Systrace数据结果图
图6.25 r23版本Systrace数据结果图
整个界面、信息排列都有一些不同,这里我们以最新的r23版本的Systrace为准。
In Command Line
DDMS工具中实际上也是调用的SDK工具中的Systrace命令,该命令在platform-tools目录下,如图6.26所示。
图6.26 Systrace指令位置
在Android 4.3以上的系统中,只需要在该目录下,用Python运行如下所示的指令即可。
- $ python systrace.py --time=10 -o mytrace.html sched gfx view wm
命令行比DDMS中的优势在于可定制性强,通过不同的参数设置可以采集不同的数据。笔者建议当开发者熟悉了图形化界面抓取Systrace后,应该多尝试使用命令行抓取,以便更加灵活地使用Systrace。
Systrace指令的可配置参数非常多,笔者这里不详细展开,一般使用上面的配置即可(抓取Graphics、view和Window Manager数据)。详细的参数设置,开发者可以参考Android Developer网站,地址如下所示。
http://developer.android.com/intl/zh-cn/tools/help/systrace.html
In Source Code
除了上面介绍的两种使用Systrace的方法外,在Android 4.3之后,开发者可以使用SDK提供的Trace类来增加自定义的Trace Tag。在Android Developer官方网站上,Google给出了示例代码,如下所示。
- public void ProcessPeople() {
- Trace.beginSection("ProcessPeople");
- try {
- Trace.beginSection("Processing Jane");
- try {
- // code for Jane task...
- } finally {
- Trace.endSection(); // ends "Processing Jane"
- }
- Trace.beginSection("Processing John");
- try {
- // code for John task...
- } finally {
- Trace.endSection(); // ends "Processing John"
- }
- } finally {
- Trace.endSection(); // ends "ProcessPeople"
- }
- }
通过上面的代码,可以在Systrace中增加对应的Tag,以便分析指定代码块的性能问题。这种方式虽然比较烦琐,但是对于准确定位细节问题还是非常有帮助的。
