赞
踩
Android性能优化是Android开发中经常遇见的一个问题,接下来将对Android性能优化方面的知识点做一个简单的梳理和总结,将从工具和代码两方面进行梳理。所谓工欲善其事必先利其器,本文首先来看一下Android性能优化有哪些得力的工具。
- public class MainActivity extends Activity {
- @Override
- protected void onCreate(Bundle savedInstanceState) {
- super.onCreate(savedInstanceState);
- setContentView(R.layout.activity_main);
- Debug.startMethodTracing();
- }
-
- @Override
- protected void onDestroy() {
- super.onDestroy();
- Debug.stopMethodTracing();
- }
- }
在结束后会生成".trace"文件,然后 通过命令traceview *.trace对数据文件进行分析。startMethodTracing共有6个重载的方法,在调用时可以根据需要进行调用。如果采用不带参数的方法,产生的“.trace"文件默认将存放到外置存储器根目录下(/sdcard/),名为”dmtrace.trace",为了方便这里建议自定义trace的名称(startMethodTracing(String traceName))。
界面上方的尺子代表了MethodTracing的时间段(从Debug.startMethodTracing()到Debug.stopMethodTracing()的时间)。每个线程的函数执行 时间图 处于和 线程名同一行 的右侧。注1: 线宽度代表执行该函数本身操作所用的 时间。注2:函数所调用的 子函数时间线夹杂在该函数 本身操作所用的时间线之间。注3:时间线的 高度不知道有什么意义。注4:函数本身是 嵌套的。注5: 每行下面粗的线段标注了Profile Panel中被选中函数调用所消耗的时间段。每个线段对应一次函数的运行。
Exclusive time 是该函数本身基本操作(不包括子函数调用)的时间。Inclusive time 是该函数调用所用的时间(包括子函数调用)的时间。列1:" Name"表示函数名。双击 函数名,可以看到在上半界面是时间轴面图(Timeline Panel)看他的所消耗的时间段。(用粗的线段标注)。双击函数名左边的" +"展开后可以看到,该函数的" parents"和" children"列2: "incl%"表示函数的 Inclusive time在 整个MethodTracing时间里占的 百分比。列3:" Inclusive"表示 Inclusive time。列4:" Excl%"表示函数的 Exclusive time在 整个MethodTracing时间里占的 百分比。列5:" Exclusive"表示 Exclusive time。列6:"Calls+RecurCalls/Total"表示对函数的 调用次数( 包括递归调用)。如图2的nativeFinished()那列为"14+0"表示14次非递归调用,0次递归调用.列7:新的版本(比如2.1)还有" time/calls"表示 平均的调用时间(即Inclusive time/ total calls)。如图3。来自google文档的图2感觉有老了。注:如果函数A调用函数B那么函数A称为函数B的" parents",函数B称为函数A的" children."
Copyright © 2003-2013 www.wpsshop.cn 版权所有,并保留所有权利。