過度の部分的な wake lock

部分的な wake lock は PowerManager API のメカニズムです。これにより、デベロッパーはデバイスのディスプレイがオフになった後も(システム タイムアウトが原因であっても、ユーザーが電源ボタンを押したことが原因であっても)CPU を動作させ続けられます。アプリで部分的な wake lock を取得するには、PARTIAL_WAKE_LOCK フラグを指定して acquire() を呼び出すか、wake lock を取得する他の API を使用します。部分的な wake lock を過度に使用すると、デバイスが省電力状態にならないため、デバイスの電池が消耗します。部分的な wake lock は必要なときにのみ使用し、不要になったらすぐに解放する必要があります。

アプリで部分的な wake lock が過度に使用されている場合、このページのガイダンスが問題の診断と解決に役立ちます。

問題を検出する

Android Vitals は、アプリの部分的な wake lock の使用が過剰になっている場合を特定するのに役立ちます。

Android Vitals

Android Vitals は、アプリで部分的な wake lock の使用が過剰になっている場合に Google Play Console を介してアラートを送信することで、アプリのパフォーマンスの改善をサポートします。

Android Vitals は、すべての部分的な wake lock の合計が 24 時間の間に 2 時間以上実行された場合、部分的な wake lock の使用量が過度であると報告します。Android Vitals は、アプリがバックグラウンドにあるとき、またはフォアグラウンド サービスを実行しているときに wake lock が保持されている場合にのみ、wake lock の継続時間をトラッキングします。現在、Android Vitals では、音声位置情報JobScheduler のユーザー開始 API によって作成されたウェイクロックは、ウェイクロックの計算から除外されます。

Android Vitals の過度の部分的な wake lock のダッシュボードには、アプリに関連付けられている除外されていない wake lock 名の内訳が表示され、影響を受けたセッションと期間を確認できます。

28 日間のすべてのデバイスで、アプリ セッションの 5% を超える割合で過剰な部分的なウェイクロックが発生すると、指標がベータ版から外れた後、Google Play でのアプリの視認性に影響する可能性があります。

アプリが部分的な wake lock を過度に停止していることがわかったら、問題に対処することが次のステップになります。

問題を解決する

WakeLock はデバイスのバッテリーを消耗させる可能性があるため、代替手段がある場合は使用しないでください。デバイスを起動状態に保つための適切な API を選択するのドキュメントは、アプリに最適なソリューションを見つけるのに役立ちます。

wake lock を使用する必要がある場合は、wake lock のベスト プラクティスに沿って、wake lock がデバイスの効率を損なわないようにしてください。特に、取得したすべてのデバイスが解放されていること、できるだけ早くロックを解放していることを確認してください。

アプリが wake lock を明示的に取得していない場合でも、wake lock を使用している可能性があります。認識できないアプリに起因するウェイクロックが表示された場合は、他の API によって作成されたウェイクロックを特定することで、それらを作成した可能性がある API を特定できます。

コードの問題を解決したら、ローカルの wake lock デバッグツールを使用して修正を確認できます。

関連ドキュメント