作为开发者,我们很想知道我的应用执行的哪些任务消耗的电量是最多的?这个问题确实会很棘手。因为电量消耗的计算与统计是一件麻烦而且矛盾的事情,记录电量消耗本身也是一个费电量的事情(所以很多设备都把这个监测电量的功能阉割掉了)。
唯一可行的方案是使用第三方监测电量的设备,这样才能够获取到真实的电量消耗(因为第三方硬件监测的时候是用的自己的供电而不是用的手机的电量)。
耗电情况,例如:打开屏幕,所有要使用CPU/GPU工作的动作都会唤醒屏幕,都会消耗电量。这和应用程序唤醒设备还不一样。比如使用叫醒闹钟(wake clock)、AlarmManager、JobSchedulerAPI。
[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-5mmZSDRb-1630654848689)(https://user-gold-cdn.xitu.io/2019/2/19/16904494d4b73834?imageView2/0/w/1280/h/960/ignore-error/1)]
手机哪些地方最耗电?
唤醒屏幕
当用户点亮屏幕的时候,意味着系统的各组件要开始进行工作,界面也需要开始执行渲染。
待机状态的电量消耗:
[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-Yc51MEeO-1630654848691)(https://user-gold-cdn.xitu.io/2019/2/19/16904494d8e08b81?imageView2/0/w/1280/h/960/ignore-error/1)]
使用和唤醒屏幕后:
[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-11KsKYd7-1630654848692)(https://user-gold-cdn.xitu.io/2019/2/19/16904494d8f47c41?imageView2/0/w/1280/h/960/ignore-error/1)]
当设备从休眠状态中,被应用程序唤醒时,可以看到在第一次唤醒时,出现一条电量使用高峰线。
CPU唤醒使用
CUP 唤醒时的高峰线:
[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-sar5zK51-1630654848694)(https://user-gold-cdn.xitu.io/2019/2/19/1690449502c37a5a?imageView2/0/w/1280/h/960/ignore-error/1)]
接下来就是后续的一些执行的消耗了:
[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-2GXsrp7Z-1630654848695)(https://user-gold-cdn.xitu.io/2019/2/19/16904494d902b4bf?imageView2/0/w/1280/h/960/ignore-error/1)]
当工作完成后,设备会主动进行休眠,这非常重要,在不使用或者很少使用的情况下,长时间 保持屏幕唤醒会迅速消耗电池的电量。
蜂窝式无线
当设备通过无线网发送数据的时候,为了使用硬件,这里会出现一个唤醒耗电高峰。接下来还 有一个高数值,这是发送数据包消耗的电量,然后接受数据包也会消耗大量电量 也看到一个峰值。
[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-ntU4qfZ3-1630654848696)(https://user-gold-cdn.xitu.io/2019/2/19/1690449500830c48?imageView2/0/w/1280/h/960/ignore-error/1)]
通常情况下,使用3G移动网络传输数据,电量的消耗有三种状态: