飞行模式待机电流分析

e938e2ec3ddb78e7b412c1733a3f9078.gif

和你一起终身学习,这里是程序员Android

经典好文推荐,通过阅读本文,您将收获以下知识点:

一、飞行模式测试步骤
二、飞行模式Debug 要点
三、如何确认休眠唤醒源
四、如何根据 RTC alarm 唤醒寻找对应的app和alarm

一、飞行模式测试步骤

飞行模式待机电流是测试其他场景电流的基础,如需解决其他场景的电流问题,第一要保证的是飞行模式待机电流正常。否则无法确定问题。下面我们看看飞行模式待机电流的测试与分析方法。

飞行模式测试步骤如下:

  1. 确认 WiFi 、BT 、Location、是否已经默认关闭。

  2. 包含GMS的版本(非GMS 版本跳过此步骤)
    需要登陆Google 账号,打开 PlayStore 更新手机上 My apps & games,更新完毕,亮屏待机5分钟,确保GMS更新同步完毕,然后关闭 GMS的同步功能。

f67585a622cf01dc99601b26fc06f142.jpeg

打开PlayStore,更新手机上My apps & games

  1. 打开飞行模式,等待30s,按Powerkey 灭屏休眠,然后测量电流。

二、飞行模式Debug 要点

1.首先要保证所有的GPIO 状态配置正确!

这个很重要,如果配置错误,就无法进行正常操作。

2. 确认系统是否已经休眠 [WDT] suspend

通过在 kernel log 中 搜索关键字: [WDT] suspend,确认系统是否已经进入休眠状态,如果kernel log中有以上关键字,就表示已经进入休眠状态。
如下 log中可以看到
<7>[199145.576777] -(0)[2029:system_server][name:mtk_wdt&][WDT] suspend
部分log如下:

<7>[199145.576777] -(0)[2029:system_server][name:mtk_wdt&][WDT] suspend
<4>[199145.576777] -(0)[2029:system_server][SPM] md_settle = 99, settle = 99
<4>[199145.576777] -(0)[2029:system_server][SPM] sec = 900, wakesrc = 0xe00c5e4 (1)(1)
<4>[199145.576777] -(0)[2029:system_server][SPM] wake up byEINT, timer_out = 2046093, r13 = 0x40000, debug_flag = 0x9f
<4>[199145.576777] -(0)[2029:system_server][SPM] r12 = 0x20, raw_sta = 0x20, idle_sta = 0x9fa, event_reg = 0x90100000, isr = 0x0
<4>[199145.576777] -(0)[2029:system_server][SPM] suspend dormant state = 0, md32_flag = 0x0, md32_flag2 = 0
<4>[199145.576777] -(0)[2029:system_server][SPM] log_wakesta_index = 8301

3. 观察电流波形是否是一条平线

如果休眠,需要观察电流波形是否是一条平线,如果是,则表示正常,如果不是,则需要分析异常跳起的唤醒源。

飞行模式正常待机电流波形图如下:

89cc79c96b1c61aea6c94d81bcb754cc.jpeg

飞行模式正常待机电流波形

4. 如果中间有异常毛刺,需要确认唤醒源

如果中间有异常毛刺,需要根据log确认唤醒源,关于如何确认休眠唤醒源,请往下看看第三步。

飞行模式异常待机电流波形图如下:

fffcc94a735ee9a79e895548ff5f9032.jpeg

飞行模式`异常`待机电

### Android 设备待机高功耗问题分析解决方案 #### 一、初步排查 为了有效定位并解决问题,需遵循严格的测试前准备措施。确保关闭WIFI/BT/GPS以及数据连接,并启用飞行模式来减少不必要的干扰因素[^3]。 #### 二、日志管理 应严格控制日志记录功能,防止其成为额外负载源。务必验证`/sdcard/mtklog` 或 `/data/mtklog`目录下不存在任何活动的日志文件,以此证明已彻底禁用了这些可能引起电流增高的服务。 #### 三、环境净化 移除所有非必要的第三方应用程序(APK),以消除它们可能是潜在的电源消耗大户的可能性;同时也要保证系统内建组件均处于良好运行状态后再开展进一步诊断工作。 #### 四、硬件层面检测 针对AP部分,重点审查各外围设备是否存在休眠泄漏现象或是未能进入休眠模式的情况。对于GPIO接口以及其他关键信号线路如PLL/CLOCK等同样要仔细检查有无异常放电状况发生。另外还需特别留意唤醒锁定(wakelock)机制是否正常运作,避免因该特性失效而导致整体无法顺利转入低能耗状态[^1]。 #### 五、软件行为监控 当遇到Home界面下的静态电力超标情形时,则建议收集一段时间内的CPU占用率统计资料(可通过ADB命令实现),这有助于识别出那些持续活跃从而拖累电池续航的应用程序实例[^2]。 ```bash adb shell cputime -e 300 -m 10 ``` 此命令用于获取过去五分钟里最忙碌十个进程的相关信息。 ---
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

程序员Android

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值