这里写目录标题
1. 电量和硬件
1.1 App 通过使用硬件模块消耗相应的电能
应用程序不会直接去消耗电池,而是通过使用硬件模块消耗相应的电能,下图是手机中一些比较耗电的硬件模块
CPU、屏幕、WiFi 和数据网络、GPS 以及音视频通话都是我们日常的耗电大户。
坦白说,智能手机硬件的飞速提升,许多其实都是厂商叫卖的噱头。绝大部分硬件对于我们来说都已经处于性能过剩的状态,但多余的性能同时也在消耗电量
1.2 资源调度机制是厂商功耗优化最重要的手段
eg:
- CPU 芯片会分大小核架构,会灵活地为不同任务分配相应的运算资源
- 手机基带、GPS 这些模块在不使用时也会进入低功耗或者休眠模式,达到降低功耗的目的
- 现在越来越多厂商利用深度学习的本地 AI 来优化资源的调度,对 GPU、运行内存等资源进行合理分配,确保可以全面降低耗电量。厂商需要在高性能跟电量续航之间寻找一个平衡点,有的厂商可能倾向于用户有更好的性能,有的厂商会倾向于更长的续航
2. 电量和应用程序
2.1 评估不同应用程序的耗电情况
根据物理学的知识,电能的计算公式为:
电能 = 电压 * 电流 * 时间
对于手机来说电压一般不会改变,所以在电压恒定的前提下,只需要测量电流和时间就可以确定耗电。
最终不同模块的耗电情况可以通过下面的这个公式计算:
模块电量(mAh) = 模块电流(mA) * 模块耗时(h)
模块耗时比较容易理解,但是模块电流应该怎样去获取呢?Android 系统要求不同的厂商必须在 /frameworks/base/core/res/res/xml/power_profile.xml
中提供组件的电源配置文件
power_profiler.xml 文件定义了不同模块的电流消耗值以及该模块在一段时间内大概消耗的电量,你也可以参考 Android D