vb.net中滚动条一直显示没有数据时也显示_Android Studio 中 System Trace 的新增功能...

4f207326eb5bcfd3747799b1461ddfd6.png

Android Studio 中 System Trace 的新增功能

在 Android Studio 4.0 中,我们已经对 CPU Profiler 的 UI 做了大量调整来提供更加直观的工作流记录,而在 Android Studio 4.1 中,我们基于开发者们的反馈对此功能进行了持续改进,并且新增了更多特性。

我们将会在本文重点介绍 Android Studio 中 System Trace 的新增功能,System Trace 也就是 "系统跟踪" 的意思,用来记录短时间内的设备活动,它会生成一个 .trace 跟踪文件,该文件可用于生成系统报告,此报告可帮助您了解如何最有效地提升应用或游戏的性能。

System Trace 虽然使用率不高,但它是一款功能强大的 CPU 记录配置。不同于函数跟踪,如 Java Method 或 C/C++ Func Trace,System Trace 跟踪的是系统级的内容,如设备活动 (例如 CPU 核心调度) 和 Android 系统进程 (例如 SurfaceFlinger)。

此外,您还可以通过在应用中调用 Trace API,使用 自定义事件 检测您的代码,这样您的自定义事件便会与系统事件一起被收集。当您在排查性能问题时 (例如 UI 卡顿或功耗过高),这些组合数据就会显得十分有用。

一次搞定所有线程

为了便于进行分析,我们将 CPU 的记录从主分析器的时间线中分离了出来。在这个专用视图中,跟踪数据被整理到了 Profiler 窗口的左侧区域中。

58c971e18d4a65998a1bc556186c9954.png

Android Studio 4.1 Beta 1 中的 System Trace 界面

您可以通过简单拖拽将某一区域或者区域内的某个元素进行向上或向下移动来重新组织列表。
我们从开发者们的反馈得知,选择每个线程来查看它的调用图 (或 System Trace 的跟踪事件) 是一件很麻烦的事,所以我们将所有线程活动整合到了同一个视图中,从而可以在显示线程状态的同时显示调用图。默认情况下,我们根据线程的繁忙程度对其进行排序,但是您也可以拖放任意一个线程以对其重新排序。

609e1891e0ed77e3599bc231eba8b963.png

拖放线程来改变列表顺序

您也可以通过单击三角形图标或双击线程名称来折叠或展开每个线程。注意,对于 Java Method Trace 和 C/C++ Function Trace,由于调用栈很深,我们默认情况下会折叠所有线程视图,以便您可以一目了然地查看所有线程数据。

9e13abcaf007353ef5bca3262d9fa425.png

C/C++ Function Trace 默认以折叠状态展示线程数据
为了便于区分,现在每个 System Trace 的跟踪事件都有一个独立的颜色。

893f9ed901027fa02e58b2a8bf1281c8.png
System Trace 事件按命名添加了对应颜色

更加直观的导航

新的 Trace UI 使用了改进的时间轴导航方案,我们用主要 - 细节视图替换了以前的水平滚动条。
在顶部,您可以看到一个时间轴,它仅仅映射了跟踪过程而不是整个分析过程。您可以使用范围选择器快速缩小范围到特定的时间段,而下面的部分则会显示对应的详细数据。

8052fa75beca5ada371f13e162b0b767.png

使用范围选择器来专注于时间轴的一小部分
在这里您可以进行更加精细的导航操作:

  • 使用 Ctrl (在 Mac 上为 Cmd) + 鼠标滚轮进行缩放;
  • 按住空格键的同时左右拖动鼠标可平移视图;
  • 使用 "WASD" 键缩放和平移视图,就像 Chrome 中的旧版 SysTrace UI 一样 (chrome://tracing)。

从 Android Studio 4.1 Canary 9 开始,您可以通过拖动鼠标在 Thread 部分进行框选。这一操作使您可以精确地选择一个矩形区域,并且只要点击右上角的 Zoom to Selection (或 "M" 键) 便可以放大该区域。您甚至可以跨越多个线程执行选择操作,这个特性在您把相似线程拖放到一起进行检视时十分有用。举例来说,您也许会想对多个辅助线程进行分析,而这种场景在游戏开发中很常见。

d8c5d15f4795005a3d0791b8e5f5aac2.png


框选、拖放与缩放

分析面板

说到分析,我们想着重聊一聊 Android Studio 4.0 中引入的新 Analysis Panel ,它位于 Profiler 窗口的右边一列。

基于您所选择的跟踪记录,在这里可以找到相应的分析数据。当您在左边栏中选择一个线程、堆栈帧或者跟踪事件时,Analysis Panel 将会显示对应的特定信息。举例来说,当您选择了一个线程时,该线程的状态与其他一些有用的信息就会被显示出来。

我们希望 Analysis Panel 能对您有所帮助,所以我们一直在探索使用各种形式来展示这些有用的分析数据。在 CPU Profiler 中,我们已经有了 Top Down、Flame Chart 和 Bottom Up。作为补充,我们在 Android Studio 4.1 Canary 10 中添加了 Summary 选项卡,用于展示线程状态分布、跟踪事件统计等信息。举例来说,我们经常需要深入了解一个反复出现的跟踪事件。

Summary 选项卡会显示基本的统计信息 (如计数,最小值,最大值等) 以及所选跟踪事件中运行时间最长的一次事件。您也可以通过从表中选择一行来导航到另一个事件。

ce1b2694c243550d7d7c620461691d77.png

统计信息以及跟踪事件中运行时间最长的事件
稳定性与性能改进
最后但也同样重要的是,我们还改进了 CPU 记录的性能和稳定性:

  • 我们修复了一些可能导致记录失败的 Bug;
  • 我们从 Android API level 28 开始使用 Perfetto 作为 System Trace 的后台,从而可以从 Android 平台的最新检测技术中获益;
  • 我们还优化了 profiler 的代码,从而显著减少了解析跟踪记录时的内存消耗 (最多达 80%)。这样您便可以开启和解析更长的跟踪信息。请记住,您可以增加 Android Studio 的 最大堆容量来支持更长时间的追踪。
原文链接:https://www.juejin.im/post/6874494055179354119

文章每周持续更新,可以微信搜索「 程序猿养成中心 」第一时间阅读和催更(比博客早一到两篇哟),另外“点击公众号下方面试/更多资料”,直接免费获取我收集的一二线互联网企业Android开发岗面试题汇总(答案解析)以及Android架构知识点汇总pdf+超清Android进阶思维脑图。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/410263.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

第一节 Memcached分布式缓存入门

关于Memcached的博文太多了,以下是个人学习的收集整理。 本节讨论问题: 简单介绍与应用下载安装注意事项简单测试Memcached分布式原理 一、介绍与应用 在常规的WEB开发下,基本都会利用到缓存用以降低对数据库的压力,提高访问速度。有时候缓存…

tomcat 拦截指定url_一口气说出 过滤器 和 拦截器 6个区别,别再傻傻分不清了

点击“ 程序员内点事 ”关注,选择“ 设置星标 ”坚持学习,好文每日送达!周末有个小伙伴加我微信,向我请教了一个问题:老哥,「过滤器 (Filter) 和 拦截器 (Interceptor) 有啥区别啊?」 听到题目我…

Java 多线程练习---创建两个子线程,每个线程交替输出“你好--来自线程***”...

|--需求说明 |--实现思路 1、创建一个类,实现Runnable,在这个类里面重写run()方法,在run()方法里面写一个20的for循环 2、创建一个类,实例化上面的类,用这个类的对象创建线程 |--代码内容 1 package cn.thread;2 3 /**…

js保留两位小数的函数_使用率低但功能强大的6个Excel函数公式应用技巧解读!...

在Excel函数公式中,有部分函数的使用率是比较低的,但是其功能也是非常强大的。一、Median函数。功能:返回一组数的中值。中值就是一组数的中间数值,如果参数包含的数值是偶数,Median函数将返回位于中间两个值的平均值。…

.net复习之七

表A: 表B: 1. SELECT * FROM A JOIN B ON A.Id B.Id 將顯示 9 條數據。 Inner join(等值连接)只返回两个表中联结字段相等的行 2. SELECT * FROM A LEFT JOIN B ON A.Id B.Id 將顯示 12 條數據…

原生js实现tab栏切换效果

我是歌谣 放弃很容易 但是坚持一定很酷 微信公众号关注小歌谣一起学习前后端知识 运行效果 首先我们来看一下原生js实现的效果 下面就开始直接上代码了 index.html <!DOCTYPE html> <html lang"en"> <head><meta charset"UTF-8"&…

线程八大核心+java并发核心知识体系精讲_Java从业者如果不懂这些,面试80%都会挂在这些核心知识上面...

JVM无论什么级别的Java从业者&#xff0c;JVM都是进阶时必须迈过的坎。不管是工作还是面试中&#xff0c;JVM都是必考题。如果不懂JVM的话&#xff0c;薪酬会非常吃亏(近70%的面试者挂在JVM上了)详细介绍了JVM有关于线程、内存模型、JVM运行时内存、垃圾回收与算法、Java中四种…

Ajax技术简单入门

随着Google公司推出的Gmail服务后,越来越多的人开始关注Ajax技术了,所谓Ajax(Asynchronous JavaScript and XML缩写)技术,就是指运用JavaScript和XML在不用刷新Web页的情况下与Web服务器通信的技术&#xff0e;一般来说&#xff0c;使用Ajax技术主要有两个原因&#xff1a;一是…

Alt Gr or Shift

This is interesting. The keyboard here is different from what we always use in China. Characters and layout are different. Hans gave me the password to logon the system. There s a “” character in it. With Chinese keyboard, I will use “Shift 2″ to gener…

window.addeventlistener 不能调用方法_Java入门第十四课:如何定义”方法“

第十四课&#xff0c;学习定义方法。一个对象包含三种最常见的成员&#xff1a;构造器、Field和方法。Field用于定义状态数据&#xff0c;而方法是行为特征的抽象。那么什么是方法呢&#xff1f;在Java中&#xff0c;方法就是用来完成解决某件事情或实现某个功能的办法。方法实…

深度测试与alpha混合(3)

alpha源混合系数通常设置为D3DBLEND_SRCALPHA&#xff0c;即当前绘制像素的alpha值。目标混合系数设置为D3DBLEND_INVSRCALPHA&#xff0c;即1减去当前绘制像素的alpha值。那么当前绘制像素的alpha值又是如何得到的呢&#xff1f;如果没有使用材质和纹理&#xff0c;当前绘制像…

Effulgent的《深入理解Direct3D9》整理版(转)

深入理解Direct3D9 深入理解D3D9对图形程序员来说意义重大&#xff0c;我把以前的一些学习笔记都汇总起来&#xff0c;希望对朋友们有些所帮助&#xff0c;因为是零散笔记&#xff0c;思路很杂&#xff0c;还请包涵。 其实只要你能完美理解D3DLOCK、D3DUSAGE、D3DPOOL、LOST DE…

我的世界光影mod怎么用_玩转光影!闪光灯、反光板怎么用才高级?

光线对于拍摄的重要性不言而喻&#xff0c;有人甚至说&#xff1a;掌握了光线&#xff0c;你就掌握了摄影。今天我们就来谈谈摄影中和“光”关系最密切的两个器材&#xff1a;闪光灯、反光板。闪光灯的种类之前也跟大家介绍过闪光灯的种类&#xff0c;如果只说较为常用的&#…

正弦定理和余弦定理_那些让你加快解题速度的高中数学公式-26 利用三正弦、三余弦定理快速解题...

作者&#xff1a;本质教育 韦卓甫简单的题目做得又快又对对于任何考试&#xff08;例如高考&#xff09;&#xff0c;本质教育有一条重要的原则&#xff1a;那些考试拿高分的&#xff0c;一定是简单的题目做得又快又对&#xff0c;这样他们才有时间去思考难题。因此&#xff0c…

Centos7静态ip设置(亲测有效)

本文引自&#xff1a;https://www.cnblogs.com/toov5/p/10340395.html&#xff0c;特此鸣谢 最近想测试消息中间件等各类web集群相关技术&#xff0c;这就需要解决linux主机之间互联互通的若干问题&#xff0c;特此折腾 友情提示&#xff1a;在ubuntu19上用vmware15 搭建centos…

认识Web.config文件

Web.config文件是一个XML文本文件&#xff0c;它用来储存 ASP.NET Web 应用程序的配置信息&#xff08;如最常用的设置ASP.NET Web 应用程序的身份验证方式&#xff09;&#xff0c;它可以出现在应用程序的每一个目录中。当你通过VB.NET新建一个Web应用程序后&#xff0c;默认情…

labview在2048中添加时间滚动条_Chrome优化深色模式:滚动条颜色也能跟随变化 使上网更具沉浸感...

为了让谷歌浏览器的深色模式(Dark Mode)变得更加一致&#xff0c;谷歌在 Chrome 的滚动条中添加了对深色模式的支持。虽然我们很多人在上网过程中可能不太关注滚动条&#xff0c;但这毕竟是个可喜的变化&#xff0c;从而让 Chrome 的深色模式更具沉浸感。滚动条并不跟随网页浏览…

rational rose 逆向工程

这一节主要介绍用户如何使用Rose的逆向工程生成UML模型&#xff0c;并用来进行C代码的结构分析。 Rational Rose可以支持标准C和Visual C的模型到代码的转换以及逆向工程。下面将详细地说明这两种C project的逆向工程的步骤和具体操作。 2.1 ANSI C&#xff08;标准C&#xff0…

rabbitmq中默认unack超时时间_RabbitMQ 与 Kafka 的技术差异以及使用注意点

导言作为一个有丰富经验的微服务系统架构师&#xff0c;经常有人问我&#xff0c;“应该选择RabbitMQ还是Kafka&#xff1f;”。基于某些原因&#xff0c; 许多开发者会把这两种技术当做等价的来看待。的确&#xff0c;在一些案例场景下选择RabbitMQ还是Kafka没什么差别&#x…

五桌面工具来创建优秀的Windows环境

很多工具并不实用&#xff0c;都说能解压文件什么的&#xff0c;今天我给你们几个牛逼的 文件修复 文件修复软件是一个功能强大的工具来修复损坏的文件。它可以扫描损坏的文件&#xff0c;并提取到一个新的可用文件的最大数据。您可以修复Word文档&#xff0c;Excel电子表格&am…