TraceView 的使用

TraceView 简介

  1. TraceView 是 Android 平台特有的数据采集和分析工具,它主要用于分析 Android 中应用程序的 hotspot,对java层代码以及framework层代码进行分析。(native方法无法直接分析)

  2. TraceView 本身只是一个数据分析工具,而数据的采集则需要使用 Android SDK 中的 Debug 类或者利用 DDMS 工具。

  3. 官方文档地址:

https://developer.android.com/studio/profile/traceview.html

TraceView 的生成

traceview的使用方法有两种:

  1. 代码调用:
    在一些关键代码段开始前调用 Android SDK 中 Debug 类的 startMethodTracing 函数,并在关键代码段结束前调用 stopMethodTracing 函数。这两个函数运行过程中将采集运行时间内该应用所有线程(注意,只能是 Java 线程)的函数执行情况,并将采集数据保存到 /mnt/sdcard/ 下的一个文件中。
/**
* 创建
*/
private void onCreate(){// 生成traceView的起点,保存traceView 的名称(路径:/mnt/sdcard/fileName)Debug.startMethodTracing("fileName");
}/**
* 销毁
*/
private void onDestroy(){Debug.stopMethodTracing();
}
优缺点:分析精准;分析范围窄;需要编码
适用场景:分析检测某一个方法的性能时适用
  1. 借助DDMS工具:
    DDMS 中 TraceView 使用示意图如下,通过选择 Devices 中的应用后点击
    按钮 Start Method Profiling(开启方法分析)和点击Stop Method Profiling(停止方法分析)


开启方法分析后对应用的目标页面进行测试操作,测试完毕后停止方法分析,界面会跳转到 DDMS 的 trace 分析界面

优缺点:分析范围广,操作简单,干扰多
适用场景:分析一个过程

###TraceView 的分析
一. 通过AndroidStudio 打开trace文件,展示的界面如下:

将方法调用顺序可视化,方法执行的时间也可视化了。
tips:Android studio 打开后,面板中文字特别小,此时可以通过放大镜来查看。(Mac 快捷键:option + command + 8)

二. 通过ADM打开trace文件,展示的界面如下:

TraceView 界面比较复杂,其 UI 划分为上下两个面板,即 Timeline Panel(时间线面板)和 Profile Panel(分析面板)。上图中的上半部分为 Timeline Panel(时间线面板),Timeline Panel 又可细分为左右两个 Pane:

  1. 时间面板

    1. 左边 Pane 显示的是测试数据中所采集的线程信息。
    2. 右边 Pane 所示为时间线,时间线上是每个线程测试时间段内所涉及的函数调用信息。这些信息包括函数名、函数执行时间等。、
    3. 可以在时间线 Pane 中移动时间线纵轴。纵轴上边将显示当前时间点中某线程正在执行的函数信息。
  2. 分析面板
    1. Profile Panel 是 TraceView 的核心界面,其内涵非常丰富。它主要展示了某个线程(先在 Timeline Panel 中选择线程)中各个函数调用的情况,包括 CPU 使用时间、调用次数等信息。而这些信息正是查找 hotspot 的关键依据。
    2. 下表列出了 Profile Panel 中比较重要的列名及其描述:

举个例子:

private void init(){a();b();c();d();for(int i=0;i<100;i++){System.out.print("i = " + i);}
}

###TraceView 的实践

  1. 先通过TraceView找到 hotspot,一般hopspot函数有以下两种:

    1. 一类是调用次数不多,但每次调用却需要花费很长时间的函数。
    2. 一类是那些自身占用时间不长,但调用却非常频繁的函数。
  2. 举个例子:

    如上图,获取sharedPreference 耗时很严重,阻塞主线程,将该操作抛到异步线程。

###总结
性能优化就像海绵中的水,挤一挤总会有的。同时,性能优化并不是一劳永逸的工作,而是一个漫长而具有挑战的任务;项目的各个阶段都会有性能上的问题,在用户体验的基础上持续进行打磨,持续保持产品的良好性能才能赢得好口碑。(和保持身体健康是一个道理)

TraceView 的使用相关推荐

  1. traceview android studio,TraceView 的正确打开方式

    引言 TraceView 是 Android SDK 提供的一个性能分析工具官网介绍 ,一般用来检查 UI 卡顿.分析 app 耗时操作.但是对于大多说 Android 开发来说,TraceView ...

  2. 正确使用 Android 性能分析工具——TraceView

    前面唠叨 最近公司app中有些列表在滑动的时候会有卡顿现象,我就开始着手解决这些问题,解决问题之前首先要分析列表滑动的性能瓶颈在什么地方.因为之前不会正确使用TraceView这个工具,主要是看不懂T ...

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

    本站文章均为 李华明Himi 原创,转载务必在明显处注明: 转载自[黑米GameDev街区] 原文链接: http://www.himigame.com/android-game/316.html 由 ...

  4. 【转】Traceview的使用

    Traceview是android平台配备的一个很好的性能分析工具.它可以通过图形化的方式让我们了解我们要跟踪的程序的性能,并且能具体到method. 使用Traceview的版本限制 对于Andro ...

  5. 性能分析工具 Android TraceView

    1. TraceView 简介 Traceview是android平台配备一个很好的性能分析的工具.它可以通过图形化的方式让我们了解我们要跟踪的程序的性能,并且能具体到每个方法的执行时间 Tracev ...

  6. Android 常用的性能分析工具详解:GPU呈现模式, TraceView, Systrace, HirearchyViewer(转)...

    此篇将重点介绍几种常用的Android性能分析工具: 一.Logcat 日志 选取Tag=ActivityManager,可以粗略地知道界面Displaying的时间消耗.当我们打开一个Activit ...

  7. 【App性能】:TraceView分析法

    抓取traceview的日志有两种方式, 1,是在代码中片段中添加: Debug.startMethodTracing("hello");.......Debug.stopMeth ...

  8. TraceView(profile) and Systrace

    TraceView(profile) 代码里面 拖到AS ----------------------------------------------------------------------- ...

  9. TraceView 使用详解 android eclipse

    先看命令 (配置好环境变量的情况下,直接traceview+空格+ trace文件路径即可): TraceView是什么 Traceview是android平台配备一个很好的性能分析的工具.它可以通过 ...

  10. Android 系统性能优化(76)--- 如何抓取traceview?

    如何抓取traceview? 在测试性能问题时,需要抓取某个app的traceview,以便从method级别做profiling,traceview正是这样一个提供method profiling的 ...

最新文章

  1. 使用T-SQL语句操作数据表-更新数据
  2. 解决linux中Kipmi0进程对CPU使用率很高问题
  3. Qt串口通信类Posix_QextserialPort中flush()函数修正
  4. 计算机辅助诊断系统的应用,AI医疗影像辅助诊断系统
  5. springcloud是如何进行服务治理的
  6. Android工程的目录说明
  7. Vue+Webpack使用规范
  8. 深入理解js构造函数
  9. 孟云飞 :一代通才 自成家数——赵之谦的艺术人生
  10. PHP、Java、Python、C、C++ 这几种编程语言都各有什么特点或优点
  11. 《林肯传》--[美]戴尔·卡耐基
  12. UI控件DevExpress WinForm新手指南——如何在应用启动时执行操作
  13. 程序开发中常用的第三方API接口汇总,包含各种类别的介绍
  14. 【超详细】嵌入式软件学习大纲
  15. Landscape - 使用Landscape Gizmo复制地形
  16. python中pytest教程_Pytest安装新手详细教程
  17. 网络通讯学习(1)---TCP通讯
  18. 农业园区APP技术研发的基本功能是什么?
  19. word空白页删除不掉
  20. windows系统 方便处理数据的bat批处理脚本(个人记录)

热门文章

  1. C语言字符串中获取数字
  2. 2021线报天下 原创工具 (免费版本,无版权问题)
  3. 学 Python 知识点其实特简单, “内置函数“ 思维导图来了
  4. comsol光学仿真03
  5. C/C++项目源码——数字雨DigitalRain
  6. 腾讯云短信 Node.js SDK
  7. python机器视觉车牌识别_车牌识别系统中的机器视觉技术
  8. Android Studio 统计代码行数插件 — Statistic 申请软著写源程序量
  9. 计算机音乐谱魔法城堡,《魔法城堡》简谱 TFBOYS 乐谱 - 新芭网
  10. 多媒体技术及应用课后习题