美文网首页
Systrace UI性能分析

Systrace UI性能分析

作者: perry_Fan | 来源:发表于2019-02-12 23:00 被阅读0次

在应用程序开发过程中,UI的流畅度是体验的核心,特别是在动画、跳转或者列表的滑动过程中,出现卡顿和无响应是非常影响用户体验的,要解决这些问题首先要找到问题的原因。TraceView是一款利器,Systrace也是很好的分析UI性能的工具。

Systrace是Android 4.1及以上版本提供的性能数据采样和分析工具。它可以帮助开发者收集Android关键子系统(如surfaceflinger、WindowManagerService等Framework部分关键模块、服务,View系统等)的运行信息,从而帮助开发者更直观地分析系统瓶颈,改进性能。Systrace的功能包括跟踪系统的I/O操作、内核工作队列、CPU负载等,在UI显示性能分析上提供很好的数据,特别是在动画播放不流畅、渲染卡等问题上。

Systrace工具可以跟踪、收集、检查定时信息,可以很直观地查看CPU周期消耗的具体时间,显示每个线程和进程的跟踪信息,使用不同颜色来突出问题的严重性,并提供如何解决这些问题的建议。

 Systrace是以系统的角度返回一些信息,并不能定位到具体耗时的方法,要进一步获取CPU满负荷运行的原因,就需要使用工具TraceView。

1. Systrace使用方法

(1)在DDMS上使用

  • 1.打开Android Device Monitor,连接收集并准备需要抓取的界面。
  • 2.单击Systrace按钮进入抓取前的设置,选择需要跟踪的内容。
  • 3.手机上开始操作需要跟踪的过程(如滑动列表)
  • 4.到了设定好的时间后,生成Trace文件。
    1. 使用Chrome打开文件即可分析。

(2)使用命令行

$cd android-sdk/platform-tools/systrace
$python systrace.py  --time = 10 -o mynewtrace.html sched gfx view 

(3) 应用中获取
Systrace不会追踪应用的所有工作,所以在有需求的情况下,需要添加要追踪的代码部分。在Android 4.3及以上版本的代码中,可以通过Trace类来实现这个功能。它能够让你在任何时候跟踪应用的一举一动。在获取Trace类的过程中,即Trace.beginTransaction() 与 Trace.endSection()之间代码的工作会一直被追踪。
在代码中加入Trace跟踪需要注意一下两点:

  • 在Trace被嵌套在另一个Trace中的时候,endSection方法只会结束离它最近的一个beginSection(String) ,即在一个Trace的过程中是无法中断其他Trace的。所以要保证endSection与beginSection调用次数匹配。
  • Trace的begin与end必须在同一线程中执行。
    下边着部分代码为使用Trace的例子,在整个方法中含有两个Trace块,可以根据需求定义更多的块,但都要成对出现,如果有开始块但没有结束块,会严重影响应用的性能。
  public void ProcessPeople(){
        Trace.beginSection("ProcessPeople");  
        try{
            Trace.beginSection("Processing A");  
          // code for task...
        } finally {
            Trace.endSection(); // ends 
        }
       Trace.beginSection("Processing B");
        try{
            // code for task2...
        } finally {
           Trace.endSection();
        }
  }  finally {
      Trace.endSection(); 
  }

2. 分析Trace报告

W、S、A、D 对应了放大、缩小、左移、右移功能。
与UI绘制关系最密切的是Alerts和Frame两个数据,
(1)Alerts
它标记了性能有问题的点,单击该点可以查看详细信息,在右侧边栏还有一个Alerts框,单击可以查看每个类型的Alerts的数量,单击一个Alert可以看到问题的详细描述。
(2)Frame
每个应用都有一行专门显示Frame,每一帧就显示为一个绿色的圆圈。当显示为黄色或者红色时,它的渲染时间查过了16.6ms(即达不到60fps的水准)。使用w方法,看看此帧的渲染过程中系统到底做了些什么。同时它会jiang

相关文章

  • 使用Systrace分析UI性能

    使用Systrace分析UI性能 翻译原文地址:https://developer.android.com/stu...

  • Systrace分析UI性能

    一、简介 Systrace允许你监视和跟踪Android系统的行为(trace)。它会告诉你系统都在哪些工作上花费...

  • Systrace UI性能分析

    在应用程序开发过程中,UI的流畅度是体验的核心,特别是在动画、跳转或者列表的滑动过程中,出现卡顿和无响应是非常影响...

  • Systrace UI性能分析工具

    在开发应用时,需要确保UI交互顺滑,有60fps的帧率。如果出现了丢帧现象,解决问题的第一步是弄清楚系统都做了什么...

  • Systrace和TraceView

    了解到性能分析中有Systrace和TraceView可以用来跟踪性能日志 Systrace的功能包括跟踪系统的I...

  • 性能工具Traceview

    性能分析功能,首推Systrace,建议看看另一篇文章性能工具Systrace,关于Trracview就简单地讲一...

  • 2020-03-13-systrace的使用

    systrace是我们分析应用性能的时候常用的工具。 谷歌提供的systrace解析网站:chrome://tra...

  • Android如何用手机抓取Systrace?

    一、手机端打开Systrace方法 Systrace 是研发人员用来分析手机卡顿等性能问题的Log,那么如何在手机...

  • 性能优化工具(二)-Systrace

    一、简介 Systrace是分析Android性能问题的神器,Google IO 2017上更是对其各种强推. 是...

  • (五) 上篇 Android 性能优化 Systrace文件生成

    小酌鸡汤 早知逢乱世,少小谩读书。 本文来源《Android 性能优化 全家桶》 Systrace是什么?可以分析...

网友评论

      本文标题:Systrace UI性能分析

      本文链接:https://www.haomeiwen.com/subject/vonkeqtx.html