(转)Android性能优化——工具篇
Android性能优化是Android开发中经常遇见的一个问题,接下来将对Android性能优化方面的知识点做一个简单的梳理和总结,将从工具和代码两方面进行梳理。所谓工欲善其事必先利其器,本文首先来看一下Android性能优化有哪些得力的工具。
1、TraceView
使用方法:
- 方法一:在相应进行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视图:
视图解读:
- 时间轴面板
界面上方的尺子代表了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."
2、APT
3、System Information
4、MAT
摘自:http://blog.csdn.net/zhgxhuaa/article/details/24870853
(转)Android性能优化——工具篇的更多相关文章
- android 性能优化-工具篇
一.Traceview 使用TraceView主要有两种方式: 1.直接打开DDMS,选择一个进程,然后按上面的“Start Method Profiling”按钮,等红色小点变成黑色以后就表示Tra ...
- Linux/Android 性能优化工具 perf
/***************************************************************************** * Linux/Android 性能优化工 ...
- android 性能优化-电量篇
消耗电量的几个主要原因.功能:1.大数据量的网络传输(网络)2.不停的网络切换(网络)3.解析大量的数据(CPU) 关于网络方面的优化: .网络请求之前,检查网络连接.没有网络连接不进行请求 .判断网 ...
- Android 性能优化——内存篇
一.android官方一些内存方面的内存tips 1.避免创建不必要的对象. 如尽量避免字符串的加号拼接,可以使用StringBuilder来拼接. 如果需要TextView设置多个字符串片段,可以使 ...
- Android性能优化工具之Systrace
本文大部分内容来自:http://www.androidperformance.com/android-performance-tools-systrace-1.html?utm_source=tui ...
- 【转】Android性能优化之布局优化篇
转自:http://blog.csdn.net/feiduclear_up/article/details/46670433 Android性能优化之布局优化篇 分类: andorid 开发2015 ...
- Android 性能优化之工具和优化点总结
Android性能优化学习 最近公司主抓性能优化工作,借此春风也学习到了许多Android性能优化方面的知识.由于组内队友的给力,优化的成果也是比较喜人.同时也学习和实践了不少知识,特此记录. 1.性 ...
- Android性能优化系列总篇
目前性能优化专题已完成以下部分: 性能优化总纲——性能问题及性能调优方式 性能优化第四篇——移动网络优化 性能优化第三篇——Java(Android)代码优化 性能优化第二篇——布局优化 性能优化第一 ...
- Android性能优化第(三)篇---MAT比Menmery Monitor更强大
作者 LooperJing 2016.11.17 16:42* 字数 1687 阅读 1603评论 3喜欢 21 在Android性能优化第(一)篇---基本概念中讲了JAVA的四大引用,讲了一下GC ...
随机推荐
- JDK的多线程与并发库
1.创建多线程 public class MultiThread { public static void main(String[] args) { // 通过继承Thread类 Thread th ...
- html表格导出Excel的一点经验心得(转载)
最近在做统计功能,要求统计结果(表格)既能查看(BS系统,在浏览器查看),又能输出为excel文件.对于输出excel文件,在网上找到n种方案,因为还需查看,最终选择了统计结果输出为table,查看时 ...
- SQL SERVER 导入、导出数据到Exce(使用OpenRowset,、OpenDataSource函数)以及访问远程数据库(openrowset/opendatasource/openquery)
启用Ad Hoc Distributed Queries 在使用openrowset/opendatasource前搜先要启用Ad Hoc Distributed Queries服务,因为这个服务不安 ...
- canvas 遮罩
上一篇介绍了CSS3可以实现mask的方式,本篇介绍canvas同样也可以实现遮罩的方法: 原理: canvas是在画布上绘图,可以绘制各种形状,同时可以在一个层上重复画图,默认情况下后面的会覆盖前面 ...
- 如何将Pcm格式的音频文件转换成Wave格式的文件
最近在做一款变声App,其中就用到了将pcm格式转wave格式,下面贴出源代码,希望带有需求的童鞋有帮助!!!这里是c++语言写的,也可以用java实现.当然java调用native函数要用到jni技 ...
- linkbutton组件
可独立存在的组件. inkbutton 按钮组件 通过$.fn.linkbutton.defaults重写默认的defaults链接按钮(linkbutton)用于创建一个超链接按钮.它是一个正常的& ...
- PostgreSQL统计信息挖掘
PG提供了丰富的统计信息,但是没有将这些统计信息使用的简单查询搞成存储过程,需要我们自己根据需要灵活的去挖掘,最近做了数据库监控,用了一些简单的东西,于是想往深了挖一下. 首先看看系统表和视图,他们都 ...
- .net MVC3 架构搭建描述
用visual studio创建.net MVC3 web项目时,默认情况下是将Views,Controllers,Models创建在一个项目中. 需要把Controllers和Models做为两个独 ...
- flowable ProcessEngine和ProcessEngineConfiguration
ProcessEngine是流程引擎,ProcessEngineConfiguration与前面四个引擎配置有些不同. ProcessEngineConfiguration增加了邮件服务和httpCl ...
- Java API操作ZK node
创建会话 建立简单连接 /** * 测试创建Zk会话 * Created by liuhuichao on 2017/7/25. */ public class ZooKeeper_Construct ...