设为首页收藏本站

LUPA开源社区

 找回密码
 注册
文章 帖子 博客
LUPA开源社区 首页 业界资讯 开源资讯 Google 查看内容

Android手机耗电深度解析:3G耗电是WiFi四倍

2013-11-16 22:37| 发布者: joejoe0332| 查看: 3686| 评论: 0|原作者: 马云|来自: 腾讯

摘要:     测试结论:1)灭屏待机最省电:a)任何App包括后台Service应该尽可能减少唤醒CPU的次数,比如IM类业务的长连接心跳、QQ提醒待机闹钟类业务的alarm硬时钟唤醒要严格控制; b)每次唤醒CPU执行的代码应该尽可能少 ...


    简单的说,当用户按power键,使得手机进入灭屏休眠状态,Android系统其实是做了前面说的一些工作:关闭屏幕、触摸屏、传感器、dump当前用户态和内核态程序运行上下文到内存或者硬盘、关闭CPU供电,当然为了支持语音通讯,modern等蜂窝信令还是工作的。


    这种情况下,应用要唤醒CPU,只有两种可能:


a)通过服务器主动PUSH数据,通过网络设备激活CPU;

b)设置alarm硬件闹钟唤醒CPU;


    这里我们重点分析第二种情况。首先来看看什么是alarm硬件闹钟。Google官方提供的解释是:Android提供的alarm services可以帮助应用开发者能够在将来某一指定的时刻去执行任务。当时间到达的时候,Android系统会通过一个Intent广播通知应用去完成这一指定任务。即便CPU休眠,也不影响alarm services的服务,这种情况下可以选择唤醒CPU。


    显然唤醒CPU是有电量消耗的,CPU被唤醒的次数越多,耗电量会越大。现在很多应用为了维持心跳、拉取数据、主动PUSH会不同程度地注册alarm服务,导致Android系统被频繁唤醒。这就是为什么雷军说Android手机在安装了TOP100的应用后,待机时间会大大缩短的重要原因。


    比较简单评测CPU唤醒次数的方法是看dumpsys alarm,这里会详细记录从开机到当前的各个进程和服务唤醒CPU的次数和时间。通过对比唤醒次数和唤醒时间可以帮助我们分析后台进程和服务的耗电情况。Dumpsys alarm的输出看起来像这样:


Android手机耗电深度解析:3G耗电是WiFi四倍


    其中544代表唤醒次数,38684ms代表唤醒时间。更详细的alarm services相关资料请参考Google官方定义:

http://developer.android.com/reference/android/app/AlarmManager.html


    4)Wake locks持有时间过长会导致耗电增加:


    Wake locks是一种锁机制,有些文献翻译成唤醒锁。简单说,前面讲的灭屏CPU休眠还需要做一个判断,就是看是否还有任何应用持有wake locks。如果有,CPU将不会休眠。有些应用不合理地申请wake locks,或者申请了忘记释放,都会导致手机无法休眠,耗电增加。


    关于wake locks的网络文章也比较多,也可以参考Google官方文献:

http://developer.android.com/reference/android/os/PowerManager.WakeLock.html


    原始数据:


    测试方法:硬件设备提供稳压电源替代手机电池供电,在不同场景下记录手机平均电流。


    测试设备:Monsoon公司的Power Monitor TRMT000141


Android手机耗电深度解析:3G耗电是WiFi四倍


    测试机型:


Android手机耗电深度解析:3G耗电是WiFi四倍



酷毙

雷人

鲜花

鸡蛋

漂亮
  • 快毕业了,没工作经验,
    找份工作好难啊?
    赶紧去人才芯片公司磨练吧!!

最新评论

关于LUPA|人才芯片工程|人才招聘|LUPA认证|LUPA教育|LUPA开源社区 ( 浙B2-20090187 浙公网安备 33010602006705号   

返回顶部