智能设备的普及给了移动应用广阔的舞台,但是目前电池技术的发展依然处于瓶颈,大部分性能强劲的手机基本都处于“一天一充”的状态。假如一款应用耗电量过大,用户极有可能减少使用次数或直接卸载。那么,开发者如何让自己的应用更省电呢?
有着8年移动产品管理经验的拉杰特·拉亚塔(Rajat Harlalka)今天撰文一篇,讲述了他的心得。
文章全文如下:
从屏幕中省电
屏幕是整个设备中最耗电的部分。据一篇移动游戏电量消耗的研究报告显示,智能手机的液晶屏消耗了45%到50%的系统电量。
智能手机的屏幕在一段时间的无操作之后会自动关闭,开发者要善于利于这一特性。另外,正常情况下屏幕的显示和亮度都是默认设置,开发者可以在应用中加入亮度感应功能,通过降低画面亮度来达到省电的目的。
减少数据交换
除了屏幕之外,无线通信组件(如GSM、3G、WLAN等)是智能设备里第二耗电的部分。据新加坡国立大学的研究报告显示,当设备的屏幕亮着的时候,无线通讯组件大约消耗了40%左右的系统电量;当屏幕关闭的时候,它们将消耗70%的系统电量。
我们可以使用一些方法来限制通信组件的使用。如在应用的后台服务器中采用间隔数据传输来代替周期数据传输,调整用户数据传输重叠的时间,用TCP持久链接和HTTP管线化来代替TCP同步链接。另外,数据的本地缓存和服务器缓存也是减少应用和服务器交换的一个有效方式。
定位服务也可能让电量溜走,非必要情况下不要在应用中随意使用。同时,当设备没有移动的情况下,应该关闭GPS服务,在设备位移时使用加速计来让GPS重新启动。
移动广告的插入也是数据频繁交换的原因之一。据统计,移动广告占了应用数据流量的65%,耗电量的23%。
降低CPU使用强度
通过减少不必要的处理进程,对应用的运行进行优化,也能起到节约电量的作用。
在游戏中,开发者可以尝试降低画面帧数。大多数情况下,每秒24到30帧就可以流畅地显示画面,略微地降低帧数不会影响用户的使用体验。
应用终止的时候,应该关闭应用的线程,否则你有可能要为此重写代码。同时,开发者还必须要了解目标设备的硬件配置,这样他们在开发应用时可以用设备自带的硬件辅助解码器来部分代替CPU的功能。
最后,将应用中复杂的运算放到云端执行,减少应用访问磁盘空间的频率等方式都能起到降低CPU使用强度的作用。
善于利用工具
开发者要学会利用一些工具来分析应用电量损耗。如在iOS上,开发者可以在设置-开发者-电量诊断中生成电量使用日志,分析每个应用在使用中的CPU功耗和网络连接情况;在Android上,开发者可以通过PowerTutor一类的应用来监视电量使用情况。当然,最好的方式是在受控环境下使用数字万用表直接对电池消耗进行测算。
摩托罗拉前CEO桑杰·贾(Sanjay Jha)曾说过:“架构差的应用会吞噬掉你手机中绝大多数的电量。”现在许多智能手机用户也在抱怨一些应用让他们的手机电池寿命不断缩短。而与之相对,许多开发者在应用开发过程中却都忽视了“节电”这个基本概念。
文中提到的方式虽然简单,但是都可以大大降低应用使用过程中的电量损耗。开发者可以根据自身情况,合理取用。