背景掃描 Wi-Fi 次數過多

當應用程式在背景掃描 Wi-Fi 時會喚醒 CPU,從而造成電池耗電。如果掃描次數過多,裝置的電池壽命可能會明顯有降低情形。如果應用程式處於 PROCESS_STATE_BACKGROUNDPROCESS_STATE_CACHED 狀態,系統就視為在背景執行。

本文將說明如何偵測應用程式在背景掃描 Wi-Fi 太多次,並提供如何診斷及解決問題的訣竅。

偵測問題

您可能永遠都不會知道應用程式有掃描 Wi-Fi 次數異常的問題。如果您已經發布應用程式,Android Vitals 可以讓您注意並進而修正這個問題。

Android Vitals

Android Vitals 會透過 Play 管理中心在應用程式於背景掃描太多次 Wi-Fi 時發出提醒,藉此改善應用程式的效能。如果應用程式在背景執行,並在 0.10 的電池工作階段中每小時掃描超過 4 次,Android Vitals 就會判定掃描 Wi-Fi 次數過多。

「電池工作階段」的定義按照各平台版本而有不同。

  • 在 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,那麼採用「Lazy First」策略可能會有幫助。Lazy First 涵蓋了三種技術,您可以用來減少掃描 Wi-Fi 次數:「減少」、「延後」和「合併」。這些技術的相關資訊請參見「針對電池壽命進行最佳化」。