Systrace UI性能分析

2019-02-12  本文已影响0人  perry_Fan

在应用程序开发过程中,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上使用

(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跟踪需要注意一下两点:

  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

上一篇下一篇

猜你喜欢

热点阅读