当应用在后台执行 WLAN 扫描时,它会唤醒 CPU,从而加快耗电速度。扫描次数过多时,设备的电池续航时间可能会明显缩短。如果某个应用处于 PROCESS_STATE_BACKGROUND
或 PROCESS_STATE_CACHED
状态,则会被视为在后台运行。
本文档介绍了如何检测您的应用正在后台执行过多 WLAN 扫描,并提供关于诊断和解决问题的提示。
检测问题
您有时可能并不知道自己的应用出现了过多 WLAN 扫描。如果您已经发布了应用,可以通过 Android Vitals 来了解问题并相应地解决问题。
Android Vitals
当您的应用在后台执行过多 Wi-Fi 扫描时,Android Vitals 可通过 Play 管理中心提醒您,从而帮助您改进应用性能。Android Vitals 认为 Wi-Fi 扫描次数过多的标准是,应用每小时执行的扫描超过 4 次。在 Play 管理中心内,您可以查看出现此行为的电池工作时段所占的百分比。
电池工作时段的定义取决于平台版本。
- 在 Android 10 中,电池工作时段是在给定的 24 小时内接收到的所有电池报告的汇总。电池报告是指两次电池充电(从低于 20% 充到 80% 以上或者从任意电量值充满到 100%)之间的时间间隔。
- 在 Android 11 中,电池工作时段是固定的 24 小时时间段。
如需了解 Google Play 如何收集 Android Vitals 数据,请参阅 Play 管理中心文档。
调查 WLAN 扫描次数
Battery Historian 等工具可帮助您深入了解应用的扫描行为。Battery Historian 针对每个应用直观呈现 WLAN 扫描行为,可帮助您更清晰地了解应用的动态。如需详细了解 Battery Historian,请参阅使用 Battery Historian 分析耗电情况。
如需了解 Battery Historian 的使用机制,请参阅 Batterystats 和 Battery Historian 演示。
减少扫描次数
如果可能,您的应用执行 WLAN 扫描时应该是在前台运行。前台服务会自动显示通知;在前台执行 Wi-Fi 扫描,从而让用户知道设备上发生 Wi-Fi 扫描的原因和时间。
如需了解如何在位于前台时进行扫描,请参阅介绍 WifiManager
类的文档。
如果您的应用无法避免在后台运行期间执行 Wi-Fi 扫描,则可能适合采用偷懒至上策略。“偷懒至上”包含三种可用于消减 Wi-Fi 扫描次数的方法:“减少”“推迟”和“合并”。如需了解这些方法,请参阅针对电池续航时间进行优化。