如果让用户发现你的应用很耗电,那就不怪用户马上卸载应用了。应用之所以耗电,是因为使用了手机的某种资源,根据谷歌官方统计,典型的耗电场景有调用GPS定位、网络传输、屏幕亮度、CPU频率、内存调度频度、wake_locker时间和次数,如果你的应用能优化以上几点,就能降低耗电风险。
一.显示屏
显示屏是耗电量最大的元件之一,如果所有元件都全功率运行,那么液晶显示屏将占整个系统功耗的45%至50%,对于显示屏,有两点需要牢记:
1.智能手机操作系统的设计使得在没有用户输入的情况下,屏幕会自动熄灭。应用开发者可以对这一设置进行调整,但只在有必要时才这样做。
2.第二种方式可能相对复杂。在正常情况下,图像和显示屏的亮度为默认设置。然而,通过调高图像和内容的亮度,同时减弱显示屏的整体亮度,应用可以提供同样的可感知亮度。这样的做法适用于视频应用和游戏,而这些应用往往功耗较大。
二.网络连接除显示屏之外,无线通信元件,包括GSM、3G和WiFi芯片是移动设备中电量消耗的第二“大户”。
a)尽量在Wi-Fi下传输数据,当然这是废话,不过可以考虑在有Wi-Fi的时候做预加载,比如应用中心的zip包、手Q web类应用的离线资源等;
b)非Wi-Fi下,尽量减少网络访问,每一次后台交互都要考虑是否必须。虽然WiFi接入方式已经占到移动互联网用户的50%,但是是有些手机设置为待机关闭WiFi连接,即便有Wi-Fi信号也只能切换到蜂窝数据;
三.CPU的使用
a)任何App包括后台Service应该尽可能减少唤醒CPU的次数,比如IM类业务的长连接心跳、QQ提醒待机闹钟类业务的alarm硬时钟唤醒要严格控制;
b)每次唤醒CPU执行的代码应该尽可能少,从而让CPU迅速恢复休眠,比如申请wake lock的数量和持有时间要好好斟酌;
c).对于游戏,考虑降低每秒帧数。在许多情况下,用户肉眼无法分辨出帧数差异,除非帧率过低。肉眼分辨的极限通常为每秒23至30帧,这也是大部分视频应用和游戏采用的帧率。
d).当应用终止时停止应用的线程
四.关闭不必要的硬件
智能手机包含多种元件,例如摄像头、加速计,以及其他多种传感器。在调用设备硬件时,开发者应当确保软件带有参数,当应用不活跃时关闭外设硬件。在用户不使用时主动关闭蓝牙和GPS等模块将可以极大地省电。