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

news/2024/10/28 18:24:09/

一、故事背景

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


http://www.ppmy.cn/news/503412.html

相关文章

stm32的低功耗模式和RTC闹钟唤醒

一 、STM32待机模式简介 很多单片机都有低功耗模式,STM32也不例外。在系统或电源复位以后,微控制器处于运行状态。运行状态下的HCLK为CPU提供时钟,内核执行程序代码。当CPU不需继续运行时,可以利用多个低功耗模式来节省功耗&#…

RK3588 EVB1蓝牙休眠唤醒调试

RK3588 EVB1蓝牙休眠唤醒调试 rk平台支持二级休眠,即SOC大部分电都关了,只留下唤醒源需要的电. rk3588 evb1因为蓝牙相关的部分大部分IO没有接到PMU电源域,所以调试起来需要另外配置,以方便快速验证. 下面,我们以博通AP6275p芯片为例, 分析下快速验证蓝牙休眠唤醒需要的设定…

JTA1145 休眠唤醒调试总结

最近因为项目,选择了这颗芯片,花了2天多时间,总算是把这个芯片的休眠唤醒功能基本调了,在这里做一个技术总结,希望可以帮到有需要的人! TJA1145芯片简介 TJA1145是一款高速CAN收发器,可在控制…

(24)STM32——待机唤醒(低功耗)笔记

目录 学习目标 运行结果 待机唤醒 模式 待机模式 寄存器 配置 代码 总结 学习目标 本节我们讲解的是有关待机唤醒的知识,这部分知识在51中并未涉及到,我感觉还是有点意思的,有点类似与我们手机的锁屏功能和关机功能,只是…

STM32L031低功耗深度睡眠RTC唤醒注意事项

0. 第一可以进入休眠,第二次无法进入休眠,折腾了好久。后来想想应该是进入休眠后立刻被唤醒了,应该是上次的唤醒中断没清除。在启动唤醒前加入以下语句,问题解决。 __HAL_RTC_WAKEUPTIMER_EXTI_CLEAR_FLAG(); //清除标志&#xf…

1568_AURIX_TC275_电源管理_唤醒配置与状态

全部学习汇总: GreyZhang/g_TC275: happy hacking for TC275! (github.com) 如果有待机RAM保持的功能激活了,那么唤醒以及复位都不会进行RAM的重新初始化。 PORST相关的滤波开了之后,可以抵抗500ns的尖峰脉冲干扰。 CPU不仅可以请求自我进入i…

Stm32 RTC周期唤醒待机模式

Stm32 RTC周期唤醒待机模式 一、前言 二、开发环境 1、软件:CubeMXMDK 2、硬件:超纬电子-NB开发板 三、参考资料 四、实现过程 1、配置CubeMX 2、程序修改 2.1、添加 wukeup函数,通过调用函数进入待机模式 void WKUP_EnterStandby(v…

怎样把LoRa模块功耗降到极致

怎样把LoRa模块功耗降到极致 一. 引言 能耗对于电池供电的产品来说是一个重大的问题,一旦电能耗尽设备将“罢工”,在某些场合电能意味着电子产品的生命。物联网时代将会有越来越多电池供电的设备通过无线通信连接,降低能耗再次摆在工程师…