安卓Alarm闹钟唤醒耗电问题的排查
Posted 古月书斋
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了安卓Alarm闹钟唤醒耗电问题的排查相关的知识,希望对你有一定的参考价值。
一、故事背景
当我们的安卓APP进行厂商预装时,对方往往对APP后台耗电有严格的要求。因此、他们对Alarm唤醒频率有严格要求。
当厂商反馈我们APP的Alarm唤醒频率太高而没有给出详细信息时,我们往往只有硬着头皮去排查自己代码中Alarm的使用。
不幸的是有时Alarm唤醒频率是第三方SDK造成的,我们自己代码的Alarm并没有问题,排查自己的代码并实际作用的。
本文分享了实际项目中一个排查定位Alarm唤醒频率元凶的方法。
二、解决方案
1、adb shell dumpsys alarm
将APP切换到后台,等一段时候后执行adb shell dumpsys alarm。
依据APP的包名在执行结果中找到相关结果,如果下图1所示。
结果如上图所示,很明显红框部分的名字为“AlarmTaskSchedule”的唤醒次数异常。接下来我们应该在代码中查找定位这个闹钟定时器的相关代码。
2、apktool d robin.apk -r -o robin
我们通过apktool使用apktool d robin.apk -r -o robin命令将APP反编译生成smali文件(放在robin目录下),然后通过UltraEdit找在smali文件所在目录robin查找所有包含“AlarmTaskSchedule”关键字的smali文件。查找结果如下所示:
通过上图我们就能定位到有问题的闹钟定时器相关代码了。实际项目中,我们这里有问题的代码就是第三方SDK的代码。因此,我们将这个问题直接反馈给相应第三方SDK处理了。
以上是关于安卓Alarm闹钟唤醒耗电问题的排查的主要内容,如果未能解决你的问题,请参考以下文章