谈到Android性能检测、优化,肯定要提到Google发布了关于 Android性能优化典范的专题,建议开发人员观看学习 (https://www.youtube.com/playlist?list=PLWz5rJ2EKKc9CBxr3BVjPTPoDPLdPIFCE)(需爬墙)。
那接下来说些更加直观的观察和量化界面渲染性能好坏的方式!
使用Android官方提供的 GPU呈现模式
这是干嘛的呢?
简单来说:就是查看当前界面是否流畅的一个可量化的工具;
原理是啥?Android系统每16毫秒发出VSYNC(垂直同步)的信号,触发对UI的渲染,
如果整个过程能保证在16毫秒以内,界面看起来就是流畅的;为什么是16毫秒?
简单的说:人眼观看60帧的画面,是很流畅的,再高理论上人眼无法察觉,16毫秒*60约等于1秒。(Android4.1黄油计划)
bilabila了一堆? 怎么用?
那条绿线就是16毫秒的标尺,高于它,也就是丢帧了,越高丢帧越厉害,界面也就越卡顿,反之其他条形线越矮,界面越流畅。
使用Android官方提供的 调试GPU过度绘制
如何打开调试GPU过度绘制?
调试GPU过度绘制
Overdraw的参考图
多次绘制浪费性能,应该尽量避免多次绘制
具体如何避免?前辈们已经说得很清楚了,就不重复造轮子了... (业界大牛都写过相关的博客)
使用一些调测平台的提供的工具
比如腾讯GT;可以方便快速的抓取当前CPU 内存 流量 电量 帧率(流畅度) 等 进行快速方便直接的查看;
【MIG专项测试组】如何准确评测Android应用的流畅度?(http://bugly.qq.com/blog/?p=330)
(下面是部分适合对Android有一定基础的小伙伴使用的方法)
查看GC是否频繁
Java虚拟机在垃圾回收的时候,整个虚拟机都会停止,也就会导致界面渲染停止,
这也就要写代码时,内存分配需要注意;比如尽量避免在for循环中创建对象
使用DDMS ->Allocation tracker 内存分配跟踪工具来辅助查看,来查看内存分配是否异常,有哪些地方内存使用过多等等;
使用 Hierarchy Viewer
检测布局是否有不必要的嵌套,从而达到更快的加载速度;
基本介绍:Hierarchy Viewer是随AndroidSDK发布的工具,位置在tools文件夹下,名为hierarchyviewer.bat。它是Android自带的非常有用而且使用简单的工具,可以帮助我们更好地检视和设计用户界面;
基本使用方法:Hierarchy Viewer 的使用非常简单,启动模拟器或者连接上真机后,启动hierarchyviewer.bat,Devices里列出了可以观察的设备,Windows里列出的是当前选中的设备的可以用来显示View结构的Window.