Android性能分析工具简介
在Android项目开发工程中,功能开发只是其中的一部分,更多的时候是优化,优化除了个人的良好习惯,往往还需要借助第三方工具。本文罗列Android优化过程中的一些常用工具借助这些工具,可以很方便的帮助我们进行性能的分析,进而进行产品的优化。Android应用优化主要从页面优化,内存优化,电量优化,GPU优化和网络优化等方面着手,涉及的知识也比较广泛,下面是优化的一些常见工具。
Android官方工具
Android官方提供了很多的优化工具,很多工具已经自动集成到Android Studio的集成开发环境中,下面就这些工具做一个简单的介绍。
StrictMode
"严格模式", 主要用来限制应用做一些不符合性能规范的事情. 一般用来检测主线程中的耗时操作和阻塞。开启StrictMode后, 如果线程中做一些诸如读写文件, 网络访问等操作, 将会在Log console输出一些警告, 警告信息包含Stack Trace来显示哪个地方出了问题。
使用及更多的介绍可以访问:
https://developer.android.com/reference/android/os/StrictMode.html
使用也可以访问下面的地址:
http://www.androidchina.net/4358.html
Systrace
Systrace是一个收集和检测时间信息的工具, 它能显示CPU和时间被消耗在哪儿了, 每个进程和线程CPU时间片所做的事情,而且会指示哪个地方出了问题, 以及给出Fix建议。但是在Android Studio 3.0和更高版本中Systrace已经被弃用,将会提供类似的新的工具。
如果要启动独立的设备监视器应用程序,请在android-sdk/tools/目录的中找到monitor,点击即可启动。相关的内容可以查看下面的文章:
https://blog.csdn.net/zhuxiaoping54532/article/details/77337054
当然也可以参考官方的介绍:
https://developer.android.com/studio/profile/systrace.html
https://developer.android.com/studio/profile/systrace-walkthru.html
https://developer.android.com/studio/profile/systrace-commandline.html?hl=fy
Hierarchy Viewer
Hierarchy Viewer提供了一个可视化的界面来观测布局的层级, 让我们可以优化布局层级, 删除多余的不必要的View层级, 提升布局速度。
在使用Hierarchy Viewer进行布局层次分析时,有必要说明下的是:
上图红框标出的三个点是关键分析数据. 左起依次代表View的Measure, Layout和Draw的性能. 另外颜色表示该View的该项时间指数, 分为:
- 绿色, 表示该View的此项性能比该View Tree中超过50%的View都要快.
- 黄色, 表示该View的此项性能比该View Tree中超过50%的View都要慢.
- 红色, 表示该View的此项性能是View Tree中最慢的.
官方文档介绍:
https://developer.android.com/studio/profile/hierarchy-viewer.html
https://developer.android.com/studio/profile/hierarchy-viewer-walkthru.html
https://developer.android.com/studio/profile/hierarchy-viewer-setup.html
https://developer.android.com/studio/profile/optimize-ui.html#HierarchyViewer
需要注意的是,Hierarchy Viewer需要Root的机器才可以执行,可以使用第三方的开源的ViewServer来协助我们在未Root的机器上使用Hierarchy Viewer分析。
当然,也可以使用Layout Inspector来替换Hierarchy Viewer,相关的使用介绍可以访问下面的文章:
https://blog.csdn.net/ziwang_/article/details/66970591
TraceView
TraceView是一个图形化的工具,用来展示和分析方法的执行时间。TraceView的使用可以参考下面的文章:
https://blog.csdn.net/u011240877/article/details/54347396
Memory Monitor
内存使用检测器, 可以实时检测当前Application的内存使用和释放等信息, 并以图形化界面展示。可以结合heap viewer, allocation tracker来做内存分析,当然也可以导出hprof文件结合第三方的MAT工具分析泄露点。
Android Profiler
Android Profiler是3.0版本的一个新功能,对之前的工具做了优化和总结,主要由cpu、内存和网络三大块组成。
CPU Profiler
CPU分析器可帮助您实时检查应用程序的CPU使用情况和线程活动,并记录方法跟踪,以便您可以优化和调试应用程序的代码。
打开步骤:
- 点击 View > Tool Windows > Android Profiler
(还可以点击工具栏的);
- 从Android Profiler工具栏中选择要配置的设备和应用程序进程(如果您已通过USB连接设备但未看到它,请确保已启用USB调试);
- 单击CPU时间轴中的任意位置打开CPU Profiler。
其中,
- ① Selected time frame:
在跟踪窗格中检查的记录时间框架的部分。当您第一次记录一个方法跟踪时,CPU分析器将自动选择您在CPU时间线中记录的整个长度。如果要检查仅记录的时间帧的一部分的方法跟踪数据,您可以单击并拖动高亮显示区域的边缘来修改它的长度。 - ②Timestamp:
表示记录方法跟踪的开始和结束时间(相对于profiler开始从设备收集CPU使用信息时)。你可以点击时间戳来自动选择整个记录作为你选定的时间框架——如果你有多个你想要转换的记录,这是非常有用的。 - ③Trace
pane:显示您所选择的时间框架和线程的方法跟踪数据。仅当您记录至少一个方法跟踪后,此窗格才会显示。在此窗格中,您可以选择如何查看每个堆栈跟踪(使用跟踪选项卡)以及如何测量执行时间(使用时间参考下拉菜单)。 - ④: 选择显示为Top Down tree, Bottom Up tree, Call Chart, or Flame
Chart这些类型的图。您可以在下面的部分中了解有关每个跟踪窗格选项卡的更多信息。
从下拉菜单中选择以下选项之一,以确定如何测量每个方法调用的时序信息:
- Wall clock time: 表示实际经过时间;
- Thread
time:计时信息表示实际的消耗时间减去不消耗CPU资源的那段时间的任何部分。对于任何给定的方法,它的线程时间总是小于或等于它的时钟时间。使用线程时间让您更好地了解给定方法所消耗的线程实际CPU使用量。
关于这部分内容的详细使用方法,可以参考下面的教程:
https://blog.csdn.net/niubitianping/article/details/72617864
第三方工具
除了官方提供的一些工具外,还有一些开源的检测手段。
Battery Historian
Google出品, 通过Android系统的bugreport文件来做电量使用分析的工具。项目地址:
https://github.com/google/battery-historian
Square
Square出品了多个Android经典的开源方案,在优化代码方面,Square也提供了诸多的优化工具。如内存泄漏方面:
https://github.com/square/leakcanary

低调大师中文资讯倾力打造互联网数据资讯、行业资源、电子商务、移动互联网、网络营销平台。
持续更新报道IT业界、互联网、市场资讯、驱动更新,是最及时权威的产业资讯及硬件资讯报道平台。
转载内容版权归作者及来源网站所有,本站原创内容转载请注明来源。
-
上一篇
Android中的Style、Theme详解已经发展史
版权声明:本文为sydMobile原创文章,转载请务必注明出处! https://blog.csdn.net/sydMobile/article/details/80164916 Style介绍 style就像单词意思一样,风格,这里面是属性的集合,如果页面中有许多控件的属性值相同那么就可以把这些属性抽出来放到style里面,定义也很简单,在values文件下的styles里面创建就可以了。 例如: Style的使用 这个相对来说就简单了,系统中也为我们预先定义了许多style,看了上一篇介绍的attr相信系统定义的这些style也会看懂吧。 文章最早发布于我的微信公众号 Android开发者家园 中,欢迎大家扫描下面二维码关注微信公众获取更多知识内容。 本文为sydMobile原创文章,可以随意转载,但请务必注明出处! Theme Theme和Style使用的是同一个元素标签<style>区别在与 Theme 与 Style 作用的范围不同,Theme 要求你设置到AndroidMainfest.xml的<application>或者<activity&...
-
下一篇
常见的移动端H5页面开发遇到的坑和解决办法
手机共通问题 问题一:用同等比例的图片在PC机上很清楚,但是手机上很模糊,原因是什么呢? 经研究发现是devicePixelRatio作怪,因为手机分辨率太小,如果按照分辨率来显示网页字会非常小,所以苹果就把iPhone 4的960640分辨率在网页里只显示了480320,这样devicePixelRatio=2;现在android比较乱,有1.5/2/3等,想让图片在手机里显示更为清晰必须使用2x的背景图来代替img标签(一般情况都是用2倍),例如一个div的宽高是100100,背景图必须得200200,然后background-size:contain;,这样显示出来的图片就比较清晰了;代码如下: background:url(../images/icon/all.png) no-repeat center center; -webkit-background-size:50px 50px; background-size: 50px 50px; display:inline-block; width:100%; height:50px; 问题二:防止手机中网页放大和缩小 这点是手...
相关文章
文章评论
共有0条评论来说两句吧...
文章二维码
点击排行
推荐阅读
最新文章
- Docker容器配置,解决镜像无法拉取问题
- Docker快速安装Oracle11G,搭建oracle11g学习环境
- 2048小游戏-低调大师作品
- SpringBoot2编写第一个Controller,响应你的http请求并返回结果
- SpringBoot2初体验,简单认识spring boot2并且搭建基础工程
- Docker使用Oracle官方镜像安装(12C,18C,19C)
- SpringBoot2整合MyBatis,连接MySql数据库做增删改查操作
- MySQL数据库在高并发下的优化方案
- Dcoker安装(在线仓库),最新的服务器搭配容器使用
- CentOS7编译安装Cmake3.16.3,解决mysql等软件编译问题