后台 Wi-Fi 扫描次数过多

当应用在后台执行 Wi-Fi 扫描时,会唤醒 CPU,从而加快耗电速度。扫描次数过多时,设备的电池续航时间可能会明显缩短。如果某个应用处于 PROCESS_STATE_BACKGROUNDPROCESS_STATE_CACHED 状态,则会被视为在后台运行。

本文档介绍了如何检测您的应用正在后台执行过多 Wi-Fi 扫描,并提供关于诊断和解决问题的提示。

检测问题

您有时可能并不知道自己的应用出现了过多 Wi-Fi 扫描的行为。如果您已经发布了应用,Android Vitals 可以告知您该问题,这样您便可以解决相应问题。

Android Vitals

当您的应用在后台执行过多 Wi-Fi 扫描时,Android Vitals 可通过 Play 管理中心提醒您,从而帮助您改善应用性能。如果应用每小时执行的扫描超过 4 次,Android Vitals 就认定 Wi-Fi 扫描次数过多。在 Play 管理中心内,您可以查看出现此行为的电池工作时段所占的百分比。

电池工作时段的定义取决于平台版本。

  • 在 Android 10 中,电池工作时段是在给定的 24 小时内接收到的所有电池报告的汇总。电池报告是指两次电池充电(从低于 20% 充到 80% 以上或者从任意电量值充满到 100%)间隔的时间。
  • 在 Android 11 中,电池工作时段是固定的 24 小时时间段。

如需了解 Google Play 如何收集 Android Vitals 数据,请参阅 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 扫描次数的方法:“减少”“推迟”和“合并”。如需了解这些方法,请参阅为延长电池续航时间进行优化