频道栏目
IT货架 > > 正文
Android性能优化——工具篇
网友分享于:Jan 1, 1970 8:00:00 AM    来源: IT货架   

标签:android性能优化   android性能分析   oom   memory   android优化   

Android性能优化是Android开发中经常遇见的一个问题,接下来将对Android性能优化方面的知识点做一个简单的梳理和总结,将从工具和代码两方面进行梳理。所谓工欲善其事必先利其器,本文首先来看一下Android性能优化有哪些得力的工具。


TraceView

traceview是Android SDK中自带的一个工具,可以对应用中方法调用耗时进行统计分析,是Android性能优化和分析时一个很重要的工具。traceview位于SDK下的tools目录中,使用时可以在cmd窗口运行traceview命令,也可以在ddms中使用,我个人比较偏向于后一种方式,比较方便易操作,不需要修改代码。

使用方法:

  • 方法一:在相应进行traceview分析的开始位置和结束位置分别调用startMethodTracing和stopMethodTracing方法,可见下面的示例代码:
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))。
  • 方法二:traceview也可以在ddms中直接使用,即在ddms中在选中某个要进行监控的进程后,点击如图所示的小图标开始监控,在监控结束时再次点击小图标,ddms会自动打开traceview视图:
bubuko.com,布布扣

这两种使用方式,各有优缺点:第一种监控过程比较精确,但需要修改代码;第二种监控使用方便,不需要修改代码,但步入第一种精确。我个人在使用时一般比较偏向第二种使用方式。

视图解读:

下面的视图是我在ddms中监控com.tencent.mobileqq进程(随便选的一个)生成的。
bubuko.com,布布扣
可以看出整个traceview视图分为上下两大部分,上半部分被称为 时间轴面板(Timeline Panel) ,下半部分被称为分析面板(Profile Panel)
  • 时间轴面板
界面上方的尺子代表了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."

Google关于traceview工具的介绍可参考 http://developer.android.com/intl/zh-cn/tools/debugging/debugging-tracing.html


Android性能优化——工具篇,布布扣,bubuko.com

Android性能优化——工具篇

标签:android性能优化   android性能分析   oom   memory   android优化   

广告服务联系QQ:1134687142 | 网站地图

版权所有: IT货架- 内容来自互联网,仅供用于技术学习,请遵循相关法律法规. 京ICP备11030978号-1