返回 登录
0

给产品经理讲技术|为什么我们总感觉安卓手机的电池不够用

图片描述

说起来这还是个伤感的故事。我之前有一台LG G3的安卓机,用了将近一年半了。当时买它纯粹是图个新鲜,那会儿2K屏刚刚兴起,大家都说它比Retina还要光滑细腻。后来实在经不住诱惑,一咬牙一跺脚买了一台回来。高高兴兴的玩了几天,等新鲜感一过,问题就冒出来了。原来,这2K屏好是好,但是像素那么多,耗电也是在所难免的。最后我竟然养成了出门必带充电宝的好(qiang)习(po)惯(zheng)。

哦,对了,为什么说伤感呢?因为这台手机,就在前几天的一个早上,进了水,救不活了。就在那时,我告诉自己,一定要买一台续航能力强的手机。

那么,手机续航到底哪家强呢?让我们来冷静的分析一下。

对一台手机来说,要想续航好,就要做到「开源节流」。开源就是增大电池容量,节流就是节约用电,把每一格电用在刀刃上。对于第一点,现在的电池技术,已经严重拖了电子设备发展的后退。增大容量就要增大体积,这对屏幕尺寸有限、越做越薄的手机来说是最大的问题。现在的很多评测,测的是持续浏览网页、刷微博或者听音乐,手机的续航时间,实际上这个成绩跟电池容量是直接挂钩的。我个人觉得没太大意义,因为那些排名靠前的,都因为电池容量太大而长的太丑被我pass掉了。

那么,如何保证手机既要小而美,又要续航强呢?那就要看谁更会节流了。节流包含几个意思,一个是你手机在运行的时候,如何用最少的电量做更多的事情,另一个是手机在待机的时候,如何用最少的电量不做事情。在节流的手段上,安卓和iPhone的系统实现有很大不同。拿三星S6和iPhone6来说,前者2550mAh的电池容量,后者只有1810mAh,但是实际体验上却是iPhone更持久。为什么安卓的电池不够用?我们今天主要来解答一下,什么造成了这种差异。

1、后台任务

在安卓平台上,应用可以在被切到后台后继续运行。你可以开一个线程,去做一些非常繁重的事情;也可以申请一个定时器,每隔一段时间,就醒过来溜达一圈,比如push的心跳;还可以作为一个正儿八经的服务,等着响应别人的请求,比如下载管理器。系统只有在内存非常紧张的时候,才会按照一定的优先级,去杀死这些后台任务。相比而言,iOS则管的非常严。系统指定了几种类型的任务,可以在后台运行,其他的,一律禁止。当然你也可以申请在后台做一些临时的事情,但是系统只给你几分钟的时间和有限的资源。这无疑是更省电的。

你问我iPhone这样做,任务万一有什么非要在后台做的事情,不就完蛋了。这其实并不是问题,因为在iOS看来,界面流畅性,电池持续性才是最高优先级的。

后来Google意识到了这个问题,从Lollipop版本开始引入了JobScheduler的API,倡导APP把后台任务都放到系统的篮子里,让系统来决策什么时候去执行你的任务。系统最后会根据当前是否在充电、是否连上WIFI等外界条件来做决定。相比分散的,没有约束的后台任务而言,它能节约很多电量。

但是,由于Google对开发者缺乏一定的控制力(比如强行审核),直到现在(尤其是国内)都没几个人用这东西。

2、唤醒

CPU和人一样,在无所事事的时候就进入睡眠状态,这是它最省电的状态。但是,你想想,你睡觉的时候最怕什么?最怕被人叫醒啊。更怕什么?更怕一遍一遍的被人叫醒啊!在安卓上,尽管待机的时候CPU是休眠的,但是APP可以申请一个唤醒锁,强行让CPU醒来,干自己的事情。最常见的是各家APP的push长连接通道,必须保持每隔一小段时间就发送一个心跳包,这就是CPU最讨厌的事情了。你可能要问了,iOS就没有唤醒吗?还是洗洗睡吧,在iOS上,系统是大爷,你没点儿关系(比如VOIP或者位置服务),就不要指望能抢到CPU了。

哦还有,你听说过葫芦娃、全家桶吗?就是一人被唤醒了,全家都诈尸,BAT都喜欢干这个。

后来Google,意识到了这个问题对电量的危害性,在6.0棉花糖版本上加入了Doze模式。就是说,当手机屏幕关闭,没有充电之后,系统进入Doze状态,限制APP联网、限制APP唤醒CPU等等。这对各个APP自己的推送系统是一个毁灭打击。你吃着火锅开着微信,抬头夹了一口菜,后台微信的消息推送就收不到了。

多么好的一个功能啊,但是,国内有没有GCM,你又把人自己的推送关了,日子怎么过啊?所以Google默认出厂的时候把这它关上了。

从续航这个角度看,iOS各种好啊。系统管得严,APP都老老实实的,省电又流畅,大家都开心。但是,你要问我最后买了个啥手机,实话告诉你,还是安卓。因为在现实世界里,还有一样东西凌驾于续航啊、流畅啊这些之上,那就是:预算。 抛开预算谈理想,耍流氓呢你?

欢迎添加微信公众号:给产品经理讲技术

图片描述

评论