后台过度 Wi-Fi 扫描

当应用程序在后台执行 Wi-Fi 扫描时,它会唤醒 CPU,从而导致电池消耗率增加。如果扫描次数过多,则设备的电池续航时间可能会明显缩短。如果应用程序处于 PROCESS_STATE_BACKGROUNDPROCESS_STATE_CACHED 状态,则被认为是在后台运行。

本文档介绍了如何检测应用程序何时在后台执行过多 Wi-Fi 扫描,并提供了一些有关诊断和解决此问题的提示。

检测问题

您可能并不总是知道您的应用程序是否表现出过多的 Wi-Fi 扫描。如果您已经发布了应用程序,Android 指标可以帮助您了解问题,以便您进行修复。

Android 指标

Android 指标可以通过在应用程序在后台执行过多的 Wi-Fi 扫描时,通过 Play 管理中心 向您发出警报来帮助您提高应用程序的性能。当应用程序每小时执行超过 4 次扫描时,Android 指标会认为 Wi-Fi 扫描过多。在 Play 管理中心,您可以查看表现出此行为的电池会话的百分比。

电池会话的定义取决于平台版本。

  • 在 Android 10 中,电池会话是特定 24 小时内接收的所有电池报告的汇总。电池报告是指两次电池充电之间的时间间隔,无论是从低于 20% 到高于 80%,还是从任何充电电量到 100%。
  • 在 Android 11 中,电池会话是固定的 24 小时时间段。

有关 Google Play 如何收集 Android 指标数据的更多信息,请参阅 Play 管理中心 文档。

调查 Wi-Fi 扫描

诸如 Battery Historian 之类的工具可以帮助您深入了解应用程序的扫描行为。Battery Historian 提供了基于每个应用程序的 Wi-Fi 扫描行为的可视化,这可以帮助您更清楚地了解应用程序发生了什么。有关 Battery Historian 的更多信息,请参见 使用 Battery Historian 分析功耗

有关使用 Battery Historian 的机制的信息,请参见 Batterystats 和 Battery Historian 演练

减少扫描次数

如果可能,您的应用程序应在应用程序在前台运行时执行 Wi-Fi 扫描。前台服务会自动显示通知;因此,在前台执行 Wi-Fi 扫描会让用户了解在他们的设备上何时以及为何进行 Wi-Fi 扫描。

有关如何在前台扫描的信息,请参见 WifiManager 类别的文档。

如果您的应用程序无法避免在应用程序在后台运行时执行 Wi-Fi 扫描,那么它可能会从应用 延迟优先 策略中受益。延迟优先包含三种可以用来减少 Wi-Fi 扫描的技术:减少延迟合并。有关这些技术的更多信息,请参见 优化电池续航时间