教你如何更好优化App耗能的五大指南:尽管智能手机给应用开发者带来了机遇,但移动设备有限的资源也制造了挑战,而挑战之一在于电量消耗。因此相对于传统的对性能和内存消耗的关注,应用开发者正越来越注重应用的能耗优化。这里将提供几点简单的指南。
一.显示屏
显示屏是耗电量最大的元件之一,如果所有元件都全功率运行,那么液晶显示屏将占整个系统功耗的45%至50%,对于显示屏,有两点需要牢记:
1.智能手机操作系统的设计使得在没有用户输入的情况下,屏幕会自动熄灭。应用开发者可以对这一设置进行调整,但只在有必要时才这样做。
2.第二种方式可能相对复杂。在正常情况下,图像和显示屏的亮度为默认设置。然而,通过调高图像和内容的亮度,同时减弱显示屏的整体亮度,应用可以提供同样的可感知亮度。这样的做法适用于视频应用和游戏,而这些应用往往功耗较大。
二.网络连接
除显示屏之外,无线通信元件,包括GSM、3G和WiFi芯片是移动设备中电量消耗的第二“大户”。
1.如果使用后端服务器,那么应用应当采用突发模式传输数据,而非周期性传输。在周期性传输模式下,尽管对流量的消耗不大,但对硬件资源的利用效率会很低。一个简单的做法是,在用户主动请求数据传输的同时进行周期性数据传输。请勿建立太多的并发TCP连接,而是使少量TCP连接或HTTP管道持续存在。
2.数据缓存也可以减少应用与服务器通信的频率。本地缓存和服务器缓存都可以减少通过网络的数据传输。
3.基于位置的服务尤其耗电,因此在没有必要的情况下,不要持续更新设备位置。例如,如果应用需要获取用户的行动轨迹,而不是单独某一位置,那么可以使用少数几个位置点,基于算法获得整体的运动信息。而另一项技术则是在设备没有运动时关闭GPS模块。开发者可以利用手机的加速计来感应运动是否开始。
4.移动广告通常也需要频繁进行网络通信。近期的一项研究表明,在某一应用的总通信能耗中广告占65%,而在总能耗中也占23%。
三.CPU的使用
在优化应用性能时,应用的功耗也将得到优化。通过减少不必要的计算任务或优化必要任务的执行,CPU利用率都可以获得下降。
1.对于游戏,考虑降低每秒帧数。在许多情况下,用户肉眼无法分辨出帧数差异,除非帧率过低。肉眼分辨的极限通常为每秒23至30帧,这也是大部分视频应用和游戏采用的帧率。
2.当应用终止时停止应用的线程,否则在应用关闭的情况下将出现无用代码。
3.开发者需要了解目标设备的硬件配置。例如,当设计音频/视频应用时,应当选择硬件支持的格式和编解码方式。如果采用硬件加速而非软件加速,那么CPU利用率将可以下降。
4.使用云计算技术将移动应用的计算任务放在云端执行。
5.避免周期性轮询,以及过分频繁地访问存储模块。
6.在复杂计算任务中考虑使用查询表。
四.关闭不必要的硬件
智能手机包含多种元件,例如摄像头、加速计,以及其他多种传感器。在调用设备硬件时,开发者应当确保软件带有参数,当应用不活跃时关闭外设硬件。在用户不使用时主动关闭蓝牙和GPS等模块将可以极大地省电。
五.挑战和工具
许多位于应用和硬件之间的中间件能帮助开发者更方便地开发移动应用,但这也意味着开发者无法自主掌握硬件资源的消耗。不幸的是,开发者目前没有太多工具去改进应用能耗。实际上,许多开发者甚至并不清楚自己应用的能耗。
开发者目前只有很少的工具和资源去检查应用的能耗情况。在iPhone上,开发者可以打开能耗诊断工具,随后使用模板去分析日志数据。PowerTutor工具可以在Android手机上实现类似的功能。不过,这些软件工具有着自己的局限,即本身也会增加能耗。
这篇文章中提到的方式尽管很简单,但能大幅降低应用能耗。不过请记住,所有这些技术都将带来副作用,包括对应用性能和内存管理产生不利影响。开发者可以基于自己的特定需求选择最合适的方式。