安卓4.4省电技术详解#e#
安卓4.4的推出,省电技术方面谷歌又表示进行了改良!让我们一起了解安卓4.4省电技术到底做了什么改变!
测试结论:
1)灭屏待机最省电:
a)任何App包括后台Service应该尽可能减少唤醒CPU的次数,比如IM类业务的长连接心跳、QQ提醒待机闹钟类业务的alarm硬时钟唤醒要严格控制;
b)每次唤醒CPU执行的代码应该尽可能少,从而让CPU迅速恢复休眠,比如申请wake lock的数量和持有时间要好好斟酌;
2)Wi-Fi比蜂窝数据,包括2G(GPRS)、3G更省电:
a)尽量在Wi-Fi下传输数据,当然这是废话,不过可以考虑在有Wi-Fi的时候做预加载,比如应用中心的zip包、手Q web类应用的离线资源等;
b)非Wi-Fi下,尽量减少网络访问,每一次后台交互都要考虑是否必须。虽然WiFi接入方式已经占到移动互联网用户的50%,但是是有些手机设置为待机关闭WiFi连接,即便有Wi-Fi信号也只能切换到蜂窝数据;
测试分析:
1)灭屏的情况:
a)灭屏待机,CPU处于休眠状态,最省电(7mA);
b)灭屏传输,CPU被激活,耗电显著增加,即便是处理1K的心跳包,电量消耗也会是待机的6倍左右(45mA);
c)灭屏传输,高负载download的时候WiFi最省电(70mA),3G(270mA)和2G(280mA)相当,是WiFi的4倍左右;
2)亮屏的情况:
a)亮屏待机,CPU处于激活状态,加上屏幕耗电,整机电量消耗不小(140mA);
b)亮屏传输,如果只是处理1K的心跳包,耗电增加不多(150mA),即便是很大的心跳包(64K),消耗增加也不明显(160mA);
c)亮屏传输,高负载download的时候WiFi最省电(280mA),3G(360mA)和2G(370mA)相当,是WiFi的1.3倍左右;
3)Alarm唤醒频繁会导致待机耗电增加:
手机灭屏后会进入待机状态,这时CPU会进入休眠状态。Android的休眠机制介绍的文章很多,这里引用一段网络文章:
Early suspend是android引进的一种机制,这种机制在上游备受争议,这里 不做评论。这个机制作用在关闭显示的时候,在这个时候,一些和显示有关的 设备,比如LCD背光,比如重力感应器,触摸屏,这些设备都会关掉,但是系统可能还是在运行状态(这时候还有wake lock)进行任务的处理,例如在扫描SD卡上的文件等.在嵌入式设备中,背光是一个很大的电源消耗,所以android会加入这样一种机制.
Late Resume是和suspend配套的一种机制,是在内核唤醒完毕开始执行的.主要就是唤醒在Early Suspend的时候休眠的设备.
Wake Lock在Android的电源管理系统中扮演一个核心的角色. Wake Lock是一种锁的机制,只要有人拿着这个锁,系统就无法进入休眠,可以被用户态程序和内核获得.这个锁可以是有超时的或者是没有超时的,超时的锁会在时 间过去以后自动解锁.如果没有锁了或者超时了,内核就会启动休眠的那套机制来进入休眠.
当用户写入mem或者standby到/sys/power/state中的时候, state_store()会被调用,然后Android会在这里调用request_suspend_state()而标准的Linux会在这里进入 enter_state()这个函数.如果请求的是休眠,那么early_suspend这个workqueue就会被调用,并且进入 early_suspend
简单的说,当用户按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的输出看起来像这样:
其中544代表唤醒次数,38684ms代表唤醒时间。
4)Wake locks持有时间过长会导致耗电增加:
Wake locks是一种锁机制,有些文献翻译成唤醒锁。简单说,前面讲的灭屏CPU休眠还需要做一个判断,就是看是否还有任何应用持有wake locks。如果有,CPU将不会休眠。有些应用不合理地申请wake locks,或者申请了忘记释放,都会导致手机无法休眠,耗电增加。
测试方法:硬件设备提供稳压电源替代手机电池供电,在不同场景下记录手机平均电流。
测试设备:Monsoon公司的Power Monitor TRMT000141
测试机型:Nexus One
灭屏benchmark(CPU进入休眠状态):7mA
灭屏WiFi:70 mA
灭屏3G net:270 mA
灭屏2G net GPRS:280mA
亮屏benchmark:140mA
亮屏Wi-Fi:280mA
亮屏3G net:360mA
亮屏2G:370mA
亮屏待机:140mA
亮屏Wi-Fi ping 1024包:150mA
亮屏Wi-Fi ping 65500包:160mA
灭屏 屏1024:45mA
灭屏ping 65500:55mA
关闭所有数据网络待机:7mA
相关推荐
在Android 4.4(KitKat)版本中,Google带来了一系列的新特性,为开发者提供了更为丰富和强大的功能,同时也提升了用户的使用体验。这篇文档将详细探讨这些新特性,旨在为Android客户端应用开发提供专业指导和参考...
【谷歌原厂安卓4.4固件:Android 4.4 WiFi版】 Android 4.4,也称为KitKat,是谷歌在2013年发布的一个重要操作系统版本,为移动设备带来了诸多改进和优化。这个版本的目标是提高性能、减少系统对硬件资源的需求,并...
【Android 4.4 安卓4.4源代码】是Android操作系统的一个重要版本,它在2013年发布,代号为“KitKat”,是Google与巧克力品牌KitKat的合作成果。这个版本的源代码对开发者来说是极其宝贵的资源,因为它提供了Android...
在这个特定的压缩包中,我们找到了适用于Android 4.4版本的VLC源码以及相关的SO(Shared Object)库文件,这对于开发者来说是宝贵的资源,尤其是那些需要在旧版本Android系统上运行VLC或进行自定义开发的人员。...
nopCommerce_4.4 功能实现详解 nopCommerce_4.4 是一个基于 .NET Core 框架的电子商务平台,具有功能强大、灵活性高、可扩展性强的特点。下面将详细介绍 nopCommerce_4.4 的功能实现详解。 基础架构 nopCommerce_...
这款“谷歌Chrome浏览器x86版APK低版本Android4.4可用浏览器版本是72.0”是专为使用x86架构设备的用户设计的,如某些平板电脑和安卓模拟器。对于那些在Android 4.4(KitKat)系统上运行的设备,这是一个理想的解决...
android4.4 app触摸校准
在使用Vue.js开发的Web应用中,可能会遇到与Android 4.4版本不兼容的问题。考虑到Android 4.4在市场份额中仍占有一定比例,特别是在一些较为老旧的设备或新兴市场中,解决这些兼容性问题是提升用户体验的重要一环。 ...
安卓4.4谷歌服务包,更好用的安卓谷歌服务,2015.1.11更新
"android4.4电视盒安装kodi17和JELLYFIN.docx"文件很可能是详细安装指南,包括了如何在Android 4.4设备上安装Kodi 17和配置Jellyfin服务器的步骤。这将指导用户完成从下载、安装到设置的整个过程,确保在旧版Android...
"修改后的android4.4原生launcher3"是针对Android 4.4 KitKat系统核心启动器应用——Launcher3的定制版本。这个启动器是用户界面的重要组成部分,它负责管理手机或平板电脑的主屏幕、应用程序抽屉以及快捷方式。在...
这份“安卓音乐播放器相关-原生Android4.4音乐播放器源码原封未动原滋原味的代码学习最基本播放器框架”提供了一个基础的起点,帮助开发者深入理解如何在Android系统上实现一个基本的音乐播放功能。 1. **多媒体...
谷歌服务员Gapps卡刷包适用于安卓4.4的ARM平台,2019年1月22日最新。
《安卓4.4开发环境构建详解》 在移动应用开发领域,Android系统占据了重要的地位,而Android 4.4(KitKat)作为一个重要的版本,为开发者提供了丰富的功能和优化的性能。本文将深入探讨如何搭建适用于Android 4.4...
App: Chrome Version: 81.0.4044.138 (404413800) armeabi-v7a Min: Android 4.4 (Kitkat, API 19) Max: Android 6.0 (Marshmallow, API 23) Target: Android 10 (Q, API 29) May 6, 2020
当我们谈论"Android4.4 系统签名"时,我们涉及到的是在Android 4.4(KitKat)版本上对APK(Android应用程序包)进行签名的过程。这个过程用于验证应用程序的来源,并确保它们在设备上正确运行。 首先,让我们来看看...
标题中的“android4.4 adb工具包”特指的是适用于Android 4.4(KitKat)及其以下版本的ADB工具集合。 **ADB简介** ADB全称为Android Debug Bridge,它是一个命令行实用程序,允许用户通过USB或无线网络连接到运行...
《深入理解Android 4.4源码:开启技术探索之旅》 Android 4.4,代号KitKat,是Google推出的Android操作系统的一个重要版本。它带来了许多改进和新特性,对于开发者来说,深入理解其源码是提升开发技能、优化应用...
在Android 4.4系统中,用户可以根据个人喜好设置静态壁纸或动态壁纸,为设备增添个性化的视觉体验。本文将详细介绍这两种壁纸的设置流程,并通过思维导图的方式帮助理解每一步的操作步骤。 首先,我们来看静态壁纸...
你没看错!这是KODI的特别改版,能安装在安卓4.4系统上,非官方原版本。与官方版本功能一致,只是能安装在4.4上。插件等通用!