欢迎您访问程序员文章站本站旨在为大家提供分享程序员计算机编程知识!
您现在的位置是: 首页  >  移动技术

Android手机耗电过多常见原因分析

程序员文章站 2022-03-09 21:31:26
最新在写一个tool,用来分析android手机耗电过多的原因。用python。 边写边记录吧。 1. 耗电过多的原因 耗电过多的原因基本可以分为两大类。其一,cpu没有睡下去。其二,cpu被频繁唤...

最新在写一个tool,用来分析android手机耗电过多的原因。用python。 边写边记录吧。

1. 耗电过多的原因

耗电过多的原因基本可以分为两大类。其一,cpu没有睡下去。其二,cpu被频繁唤醒。当然,前提是没有插usb,并且灭屏了。?

1.1 cpu频繁唤醒的情况

在黑屏状态下,如果手机没有异常,并且后台没有类似下载apk,播放音乐等行为的话,cpu会睡下去(后文直接用深睡代替)。并且,不会过于频繁的被唤醒(唤醒也是指cpu被唤醒,不是亮屏)。如果看log时发现机台会很频繁的唤醒(几秒一次甚至更频繁),那肯定是不正常的。

一般情况下,会在唤醒时刻附近直接查看唤醒源,定位到是什么唤醒了机台。可能是modem还有其他一些硬件的原因,也可能是上层apk设置了一些alarm。

1.2 cpu没有睡下去

cpu没有睡下去时,一般是因为有wakelock。可能是上层apk的wakelock,也可能是kernel中的一些driver持有的wakelock。

kernel中的wakelock的一些信息可以通过cat /d/wakeup_sources查看。active_since的值特别大的,就是怀疑对象。

还有上层的wakelock,可以查看/sys/power/wake_lock节点。当屏幕亮时,这里总是有一个powermanagerservice.display。