您的位置:首页 > 移动开发 > Android开发

Android 性能优化 概念介绍

2016-10-23 17:25 225 查看

前言:

本篇文章是一篇摘录,目的是从开头就进行有效的性能优化学习,并遵从正确的方法论。其中摘录内容来自 张明云稀有猿诉MeloDev,十分感谢。

1. 为什么要性能优化

开始着手进行性能优化,是意识到了这块对于一个应用的重要性,以及长期重要性;不仅仅满足于功能、业务本身,还要着眼于代码的效率、用户的体验。另外,技术是为产品服务的。

2. 什么是性能

对于Android应用程序来讲分为三个方面:

一方面是软件整体表现上的性能,也就是能多快给用户想要的结果。

比如新闻阅读类应用,这个性能就是当用户点一条新闻时,多快能把新闻内容展示给用户,这个通常取决于业务逻辑,网络,以及后台服务器的性能。

另外一方面就是 UI性能 ,也就是所谓的流畅度。

这个在移动应用上面有着更严重的影响,因为触摸和手势的原因,如果应用程序不流畅,会严重影响体验,相比如PC桌面软件会更严重。这个是我们通常所谓的性能,大多数情况下,以及网络上绝大多数文章都是针对于此。对于安卓应用来说要想达到流畅,或者说做动画时,列表滑动时不卡顿,那么帧率(FPS Frame per Second)要达到60这个也是我们在做性能优化时的一个衡量的标杆。

还有一方面就是 更少的资源占用 ,包括内存,CPU,电池,磁盘,网络流量,服务器资源等等。

这个也很重要,特别是内存,CPU和电池,前二个对于所有软件来说都是衡量性能的一个重要指标,电池则是移动应用特有的,特别是智能手机上面。

2. 性能问题分类

UI卡顿和稳定性:

启动慢、页面显示需要长时间转圈加载、页面切换卡顿、黑白屏(卡慢崩会让人烦躁);

所对应的即UI性能优化。

内存问题:

耗内存、OOM、程序切换到后台后占用内存无法释放(OOM会影响产品的稳定性;耗内存、内存泄露会影响整机的性能;占用内存多预示着留给其它应用的剩余内存空间小)

所对应的即内存性能优化。

功耗问题:

发烫(耗电),即优化耗电量。但与前两者也密不可分。

所对应的即功耗性能优化。

启动速度过慢

即优化启动速度

安装包体积大

即优化安装包体积

3. 性能优化指标

性能指标的定义应该具有可衡量、可比较的特点,所以每项性能指标可以是数值,也可以是一份报告。用数据说话最有说服力。

启动速度:

时间,越短越好;

UI卡顿:

FPS,即Frams per Second,一秒内的刷新帧数,越接近60帧越好;

过渡绘制:

打开设置中的GPU过度绘制开关,各界面过度绘制不应超过2.5x;也就是打开此调试开关后,界面整体呈现浅色,特别复杂的界面,红色区域也不应该超过全屏幕的四分之一;

内存泄露:

AS静态代码检测结果、MAT检测结果,内存泄露很难用数值定义,但可以通过将优化前后工具检测的结果对比得出结论。没有内存泄露最好;

内存峰值:

峰值,峰值越低越好;

功耗:

单位时间内的掉电量,掉电量越少越好;

安装包大小

虽然不是性能方面,但也是一种优化。

4. 解决问题方法论

遵循了解问题→定位问题→分析问题→解决问题→验证问题的思路,基本上都可以解决:

了解问题:对于性能问题来讲,这个步骤只适用于某些明显的性能问题,很多无法感知的性能问题需要通过工具定位;

定位问题:通过工具检测、分析,定位在什么地方存在性能问题;如果很难定位,可以采用排除法(屏蔽部分代码,看现象是否仍然存在,如果还存在,则说明被屏蔽的代码没有问题,这样逐渐缩小问题的范围);

分析问题:找到问题后,分析针对这个问题该如何解决,确定解决方案;

解决问题:这个没什么可说的,如果是自己无法解决的问题,借助搜索引擎,你遇到过的问题很多人都遇到过,并且极有可能已经被解决了;

验证问题:保证每一次优化都有效,没有产生新问题,保证产品的稳定;

5. 性能优化工具

开发者选项:

GPU呈现模式分析、GPU过渡绘制、严格模式、应用无响应ANR等;

IDE中:

Android Studio,比如静态代码检测工具、Memory Monitor、CPU Monitor、NetWork Monitor、GPU Monitor、Layout Inspector、Analyze APK等;

SDK中:

sdk\tools,比如DDMS、HierarchyViewer、TraceView等;

第三方性能优化工具:

MAT、Leakcanary、BlockCanary、GT等;

结语

本文综合了几篇很好的文章介绍了性能优化的概念。性能优化本身也是非常多层面多方面的,在Android开发上,性能主要指的是UI性能,即流畅度问题;和更少的资源占用,即又分为内存问题和功耗问题。接下来就着一学习。感谢大牛们的分享,少走很多弯路。

参考:

Android技术专题应用开发进阶必经之路之性能优化

Android应用性能剖析全攻略

Android的性能优化

Android客户端性能优化(魅族资深工程师毫无保留奉献
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: