安卓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闹钟唤醒耗电问题的排查的主要内容,如果未能解决你的问题,请参考以下文章

Android4.4之后休眠状态下Alarm不准时的问题

Android闹钟 AlarmManager的使用

Android4.4之后休眠状态下Alarm不准时的问题

Android4.4之后休眠状态下Alarm不准时的问题

Android闹钟 AlarmManager的使用

Dumpsys Alarm查看应用程序唤醒命令