部分的な 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 時間以内に 3 時間を超える場合、部分的な wake lock の使用が過剰であると報告されます。
Android Vitals は、アプリがバックグラウンドにあり、フォアグラウンド サービスがないときに wake lock が保持されている場合にのみ、時間を記録します。
Android Vitals では、部分的な wake lock の使用に対して、部分的な wake lock の明確なユーザー メリットがあり、部分的な wake lock を使用せずにその結果を達成するより良い方法がないシナリオで、一部の例外が認められています。その場合、Android Vitals では、部分的な wake lock 時間が 3 時間の制限にカウントされないことがあります。たとえば、アプリがユーザーに音声を再生している場合、デバイスをスリープ状態にしないことに明確なメリットがあり、デバイスをスリープ状態にせずに音声を再生する方法はありません。この場合、部分的な wake lock の時間は Android Vitals の計算対象になりません。
28 日間にわたって、すべてのデバイスのアプリ セッションの 5% を超える部分的なウェイクロックが発生した場合、指標がベータ版を終了すると、Google Play でのアプリの視認性に影響する可能性があります。
アプリが部分的な wake lock を過度に保持していることがわかったら、問題に対処することが次のステップになります。
問題を解決する
ウェイクロックはデバイスのバッテリーを消耗させる可能性があるため、代替手段がある場合は使用しないでください。デバイスをスリープ状態にしない適切な API を選択するのドキュメントを参照して、アプリに最適なソリューションを見つけてください。
どうしても wake lock を使用する必要がある場合は、wake lock のベスト プラクティスに従って、wake lock がデバイスの効率を損なわないようにしてください。特に、取得したすべてのデバイスが解放されていることを確認し、できるだけ早くロックを解除してください。
コードの問題を解決したら、ローカルの wake lock デバッグ ツールを使用して修正を確認できます。
関連ドキュメント
あなたへのおすすめ
- 注: JavaScript がオフになっている場合はリンクテキストが表示されます
- フリーズしたフレーム
- 継続的インテグレーションでベンチマークを実行する
- Macrobenchmark を使用せずにベースライン プロファイルを作成して測定する