バックグラウンドでの過度の Wi-Fi スキャン
コレクションでコンテンツを整理
必要に応じて、コンテンツの保存と分類を行います。
アプリがバックグラウンドで Wi-Fi スキャンを実行すると、CPU が復帰して電池が消耗します。スキャンが多すぎると、デバイスの電池寿命が著しく短くなることがあります。PROCESS_STATE_BACKGROUND
または PROCESS_STATE_CACHED
状態のアプリは、バックグラウンドで実行されているとみなされます。
このドキュメントでは、アプリがバックグラウンドで Wi-Fi スキャンを過度に実施していることを検出する方法と、問題を診断し対処する方法について説明します。
問題を検出する
アプリが異常な回数の Wi-Fi スキャンを示していることを常に把握できるとは限りません。アプリをすでに公開している場合は、Android Vitals で問題を認識し、解決できます。
Android Vitals
Android Vitals を使用すると、アプリがバックグラウンドで Wi-Fi スキャンを過度に実施しているときに、Google Play Console を介してアラートを受け取ることができます。これは、アプリのパフォーマンスの改善に役立ちます。Android Vitals は、アプリが 1 時間あたり 4 回を超えるスキャンを実施している場合、Wi-Fi スキャンが過度であると判断します。Google Play Console では、この動作を示すバッテリー セッションの割合を確認できます。
バッテリー セッションの定義は、プラットフォームのバージョンによって異なります。
- Android 10 のバッテリー セッションは、指定された 24 時間以内に受信したすべてのバッテリー レポートが集約されたものです。バッテリー レポートは、2 回の充電(バッテリー残量が 20% 未満から 80% 超まで、または任意の充電レベルから 100% まで)の間隔を指します。
- Android 11 のバッテリー セッションは、固定の 24 時間です。
Google Play が Android Vitals のデータを収集する方法については、Play Console のドキュメントをご覧ください。
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 スキャンを減らすために削減、延期、融合の 3 つの手法を使用できます。これらの手法について詳しくは、バッテリー寿命を長期化するために最適化するをご覧ください。
あなたへのおすすめ
このページのコンテンツやコードサンプルは、コンテンツ ライセンスに記載のライセンスに従います。Java および OpenJDK は Oracle および関連会社の商標または登録商標です。
最終更新日 2025-07-27 UTC。
[null,null,["最終更新日 2025-07-27 UTC。"],[],[],null,["# Excessive Wi-Fi Scanning in the Background\n\nWhen an app performs Wi-Fi scans in the background, it wakes up the CPU,\ncausing rate of battery drain. When too many scans occur, the device's\nbattery life may be noticeably shortened. An app is considered to be running in\nthe background if it is in the `PROCESS_STATE_BACKGROUND` or\n`PROCESS_STATE_CACHED` state.\n\nThis document explains how to detect when your app is performing too many Wi-Fi\nscans in the background, and provides tips about diagnosing and addressing\nthe problem.\n\nDetect the problem\n------------------\n\nYou may not always know that your app is exhibiting an inordinate\nnumber of Wi-Fi scans. If you have already published your app,\nAndroid vitals can make you aware of the problem so that you can fix it.\n\n### Android vitals\n\nAndroid vitals can help improve your app's performance by alerting you via the\n[Play Console](https://play.google.com/console/) when your app is\nperforming excessive Wi-Fi scanning in the background. Android vitals considers\nWi-Fi scanning excessive when an app performs more than 4 scans per hour.\nIn Play Console you can check percentage of *battery sessions* that exhibit\nthis behavior.\n\nThe definition of *battery session* depends on the platform version.\n\n- In Android 10, a battery session is the aggregation of all battery reports received within a given 24-hour period. A *battery report* refers to the interval between two battery charges either from below 20% to above 80% or from any charge level to 100%.\n- In Android 11, a battery session is a fixed 24-hour period.\n\nFor information on how Google Play collects Android vitals data, see the [Play\nConsole](https://support.google.com/googleplay/android-developer/answer/7385505)\ndocumentation.\n\nInvestigate the Wi-Fi scans\n---------------------------\n\nTools such as Battery Historian can help you gain more insight into your\napp's scanning behavior. Battery Historian provides a visualization of Wi-Fi\nscanning behavior on a per-app basis, which can help you gain a clearer\npicture of what's happening with your app. For more information about Battery\nHistorian, see\n[Analyzing Power Use with Battery Historian](/topic/performance/power/battery-historian#asd).\n\nFor information about the mechanics of using Battery Historian, see\n[Batterystats and Battery Historian Walkthrough](/topic/performance/power/setup-battery-historian).\n\nReduce the scans\n----------------\n\nIf possible, your app should be performing Wi-Fi scans while the app is running\nin the foreground. Foreground services automatically present notifications;\nperforming Wi-Fi scans in the foreground thus makes the user aware of the\nwhy and when Wi-Fi scans take place on their device.\n\nFor information on how to scan while in the foreground,\nsee the documentation for the\n[`WifiManager`](/reference/android/net/wifi/WifiManager#startScan()) class.\n\nIf your app cannot avoid performing Wi-Fi scans while the app is running in\nthe background, it may benefit from applying\na [Lazy First](/topic/performance/power#lazy) strategy. Lazy First\nencompasses three techniques that you can use to cut down on Wi-Fi scans:\n*reduce* , *defer* , and *coalesce* .\nFor information about these techniques, see\n[Optimizing for Battery Life](/topic/performance/power).\n\nRecommended for you\n-------------------\n\n- Note: link text is displayed when JavaScript is off\n- [Excessive Mobile Network Usage in Background](/topic/performance/vitals/bg-network-usage)"]]