Android 11 のデベロッパー プレビューが公開されました。ぜひお試しのうえ、フィードバックをお寄せください

バックグラウンドでの過度の Wi-Fi スキャン

アプリがバックグラウンドで Wi-Fi スキャンを実施すると、CPU が復帰して電池が消耗します。スキャンが多すぎると、デバイスの電池寿命が著しく短くなることがあります。PROCESS_STATE_BACKGROUND または PROCESS_STATE_CACHED 状態のアプリは、バックグラウンドで実行されているとみなされます。

このドキュメントでは、アプリがバックグラウンドで Wi-Fi スキャンを実施しすぎていることを検出する方法と、問題を診断し対処する方法について説明します。

問題を検出する

アプリが異常な回数の Wi-Fi スキャンを示していることを常に把握できるとは限りません。アプリをすでに公開している場合は、Android Vitals で問題を認識し、解決できます。

Android Vitals

Android Vitals は、アプリがバックグラウンドで過剰な Wi-Fi スキャンを実施している場合に Play Console を介して警告を発することで、アプリのパフォーマンスの改善をサポートします。Android Vitals は、アプリがバックグラウンドでの実行中にバッテリーセッションの 0.10% で 1 時間に 4 回以上のスキャンを実施した場合、Wi-Fi スキャンが過度であると判断します。

バッテリー セッションとは、2 回のフル充電の間隔のことです。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 つの手法(削減、延期、融合)があります。こうした手法の詳細については、電池寿命改善のための最適化をご覧ください。