【Android游戏开发之十】(优化处理)详细剖析Android Traceview 效率检视工具

  • 时间:
  • 浏览:0

  // start tracing to "/sdcard/yourActivityTrace.trace"

本文转自 xiaominghimi 51CTO博客,原文链接:http://blog.51cto.com/xiaominghimi/4006325,如需转载请自行联系原作者

  在运行守护进程刚刚,首没人保证朋友的AVD是那我中含 SD card的AVD,那我不时会 使trace文件保存到/sdcard/...当中。运行后时会 任意做许多操作,许多点击home键。这是通过DDMS file explore就时会 看过/sdcard/目录下有那我trace文件,现在把这俩文件copy到电脑上指定的目录,假设是C:/tracefile 目录下。

最后在eclipse Preferences-->Android-->Launch加入 -sdcard F:/mysdcard.img (此步骤什么都我在第五种创建最好的最好的办法中加上sdcard的支持)  

  traceview C:/tracefile/yourActivityTrace.trace

 下面是运行起来的TranceView:

什么都有traceview是个非常好的守护进程监视工具,时会 帮助找出守护进程运行缓慢时的函数,让朋友的代码不断完善和改进!

哪些地方是TraceView?先看下百度出来的解释吧:

注意1:可能出先 一下图片这俩内存溢出的疑问; 

  Google Dev Guide当中说时会 在activity的onCreate()中加上Debug.startMethodTracing(), 而在onDestroy()中加上Debug.stopMethodTracing(),许多在实际的测试时发现这俩最好的最好的办法觉得暂且好用,可能通常情況下朋友的activity的onDestroy()是由系统决定多会儿调用的,许多可能等了很长时间还要会得到这俩trace文件。许多决定在onStop()中来调用Debug.stopMethodTracing()。那我当朋友切换到其它activity可能点击home键的刚刚onStop()就会被调用,朋友也就时会 得到详细的trace file。

使用 mksdcard -l mycard 1024M F:/mysdcard.img 创建了那我1G的sdcard;

Time/Call: 总的时间。(ms)

很明显我在故意消耗内存和时间。

// start tracing to "/sdcard/yourActivityTrace.trace" Debug.startMethodTracing("yourActivityTrace");

Exclusive: 同级函数五种运行的时间

    许多这里要小心,可能 /h 那我可能被认为是转义字符!!!为了除理时会 尽可能暂且使用h,n,r,t,等等成为名字的头字母,当然还有五种就时会 详细除理这俩疑问,之类还是我的C盘 himi.trace 文件,时会 写cmd命令的刚刚写成: traceview c://himi 嘿嘿~要注意细节。

    第五种:朋友在eclipse中创建avd的刚刚的刚刚 在选取api下面有个 Sd Card 的选项,第一项填入创建sdcard的大小即可。 

下面来看如保实现以及还要注意的地方: 

    实现的步骤分为三步:1.还要先在朋友的模拟器中创建sdCard ;2.将朋友的调试代码嵌入工程;3.利用TraceView来观察和分析代码情況; 

备注1:

可能咱们的调试代码会在SD卡中生成那我追踪文件,也什么都我往SD卡中写入了数据,什么都有还要声明三根权限。这里还要注意哦!

  时会 通过命令行来执行traceview,进入tools目录后,执行

  首先,还要在守护进程当中加入代码,以便生成trace文件,有了这俩trace文件才时会 将其转化为图形。

Calls+Recur Calls/Total: 调用和重复调用的次数

 Name:列出的是所有的调用项,前面的数字是编号,展开时会 看过有的有Parent 和Children子项,什么都我指被调用和调用。

  Debug.startMethodTracing("yourActivityTrace");

 注意2:可能出先 路径不对的疑问:

备注2;

  

    最右上角表示运行守护进程总共用了几块时间,从traceview画面中朋友看过有各种颜色,部分颜色代表不同的函数和步骤,没人同一颜色的区域越大,就代表这俩步骤运行时间越长,可能看过下面的统计表,明显时会 看出除了序列 0 1 是系统函数外,2. 3.函数 占用的时间比较长,没人序列4是个自定义的函数名为 “hot”这俩占用了几乎与主守护进程 主draw的时间一样了,没人肯定有疑问。当然觉得这俩最好的最好的办法是我故意写的,什么都我为了来演示traceview。这俩hot函数的代码如下:

call java -Xms128m -Xmx512m -Djava.ext.dirs=%javaextdirs% -jar %jarpath% %*

Incl: inclusive时间占总时间的白分比

备注:要记住当把调试代码加入项目中刚刚暂且立即运行项目,什么都我还要在AndroidMainfest.xml中定义三根"写入SD卡的权限"没人加上权限的代码如下:

使用 emulator -avd my_android -sdcard F:/mysdcard.img 激活sdcard!

Excl: 执行占总时间的白分比。

    之类:我的 himi.trace 装进了C盘,没人我的cmd命令是: traceview c:/himi 许多回车!

Inclusive 什么都我说除统计函数五种运行的时间外加上上调用子函数所运行的时间

2.将朋友的调试代码嵌入工程

    (可能第二种创建最好的最好的办法中的第二部激活出先 emulator: ERROR: the user data image is used by another emulator. aborting,请关闭模拟器,可能进入目录: /Documents and Settings / 用户 / .android /的AVD / *设备* / (比如我的目录是:C:/Documents and Settings/Administrator/.android/avd/android2.0.avd)许多删去以.lock结尾的文件夹就行(我简单解释下为哪些地方要删除哪些地方地方文件呢,觉得.lock是加锁,可能守护进程崩溃等原应原应无法清除哪些地方地方以.lock结尾的文件夹,就会出先 这俩疑问,也什么都我这俩avd的锁没人被释放,原应avd manager以为这俩avd正在使用当中。))

 

<uses-permission android:name="android.permission.WRITE_EXTERNAL_STORAGE"></uses-permission>

    正如朋友百度到的说明一样,在守护进程运行的开端加上  Debug.startMethodTracing("yourActivityTrace"); 许多在onPause()中调用Debug.stopMethodTracing(); 为哪些地方要将刚结速写在onPause()中而不写在onStop(),没人可能你去看api励志的话 ,许多你看过,Api中介绍onPause()会在你返回和点击home按键后触发,而onStop()一般是由系统来触发,当该守护进程居于后台的刚刚,许多当内存紧张的刚刚,可能会调用,许多可能永远不用调用到!

 

    可能sdcard分配的空间太小,则守护进程追踪文件就总是记录到sd储蓄卡容量慢为止,什么都有调试前,要为守护进程生成那我适当的SD存储卡也较为重要,可能守护进程运行时间越长,这俩追踪文件也就越大。

    【cmd 命令! 打开cmd 许多cd 到android sdk tools 路径下;(可能在环境变量Path中将sdk tool路径配置上,许多重新打开cmd)】

  要加上的代码如下:

// ... // stop tracing Debug.stopMethodTracing();

    第二种:cmd 命令! 打开cmd 许多cd 到android sdk tool 路径下;(可能在环境变量Path中将sdk tool路径配置上,许多重新打开cmd)

    右上角的那我箭头,第那我表示从模拟器sdcard导出文件,第六个表示从PC上导入文件到sdcard中、“—”代表删除 .....

  Java代码

    除理最好的最好的办法:到SDK 下的tools 下 找到 traceview.bat 文件,鼠标右键-编辑(可能记事本打开),最后一行替加上那我: 

  刚刚就时会 看过图形了,接下来什么都我按照Google Dev Guide中的解释去分析图形就OK了。

// ... // stop tracing Debug.stopMethodTracing();

  关于Traceview的使用

     Traceview是android平台配备那我很好的性能分析的工具。它时会 通过图形化的最好的最好的办法让朋友了解朋友要跟踪的守护进程的性能,许多能具体到method。

 没人,在traceview的右半部统计字段中:

1.对于创建模拟器的sdCard这里写出五种最好的最好的办法:

    许多朋友通过cmd来运行生成的追踪文件 traceview C:/name 追踪文件所在的路径装进C盘,装进C盘以外别的盘励志的话 我这里是无法正常打开traceview的谁能谁能告诉我哪些地方原应。 name 表示生成的.trace文件,cmd的刚刚不还要输入“.trace”后缀 ;然还要出先 TraceView的分析窗口;