layout: post
title: Android Device Monitor工具的使用
date: 2015-12-01
categories: blog
tags: [Android,Android调试]
category: Android
description: 简单的Android程序调试,结合Device Monitor来说明使用过程
使用Device Monitor来查看函数的执行时间
@Override
public void onClick(View v) {
functionInvoke(1000);
}
private void functionInvoke(int time) {
for(int i=0;i<1000;i++);
if(time > 0){
functionInvoke(--time);
}
}
实现以上的函数,我们知道,当值行点击的时候会递归调用 functionInvoke() 1000次,这需要一定的时间吧.
App启动后,在点击触发之前,在Monitor左面板选择APP的包名,点击Monitor左面板上方的start method profilling开始记录(按钮上标由红变黑),点击APP的触发控件,开始记录,估摸着执行完毕后在点击Monitor上刚才点点按钮.得到一个trace文件,并会自动在中间面板打开.
现在分析该内容关于使用方法和参数含义参见博客
现在得到这个界面,我们从中选择我自己的函数
在这里我们可以看见调用他的是onClick,她调用的有functionInvoke(),相比普通的调用,这里多了递归调用的parent和child,并且都为本身,这从函数的实现可以看出.
在这里需要分析的是上图,第一字段说明了9.2%的时间在执行该函数(不含内部调用的别的函数执行的时间,比如在functionInvoke()在调用Log.v(TAG,"msg")是不计算v(...)的执行时间的),这里的时间是总的,包括1000次递归的时间,第二字段把9.2%换成具体时间第三四字段就是包括了内部函数的执行时间,其含义同一二字段.Call+recurCalls/Tool表示递归执行的次数,
Real Time/Call 表示单次执行的时间