安卓Alarm闹钟唤醒耗电问题的排查

当安卓APP遭遇厂商关于后台耗电的严格要求时,尤其是Alarm唤醒频率过高问题,排查工作至关重要。通过`adb shell dumpsys alarm`命令监控Alarm状态,并用apktool反编译APK,搜索关键字符串来定位问题源,可以有效找出导致高耗电的Alarm任务,如文中例子所示,问题可能源自第三方SDK,需与SDK提供商沟通解决。
摘要由CSDN通过智能技术生成

一、故事背景

当我们的安卓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处理了。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值