停止した部分的な wake lock
コレクションでコンテンツを整理
必要に応じて、コンテンツの保存と分類を行います。
部分的な wake lock は PowerManager
API のメカニズムであり、デベロッパーはこれを使用して、デバイスのディスプレイがオフになった後も(原因がシステム タイムアウトであってもユーザーが電源ボタンを押したことであっても)CPU が動作し続けるようにすることができます。アプリで部分的な wake lock を取得するには、PARTIAL_WAKE_LOCK
フラグを指定して acquire()
を呼び出します。または、wake lock を取得する他の API を使用します。アプリがバックグラウンドで実行されているときに部分的な wake lock が長時間保持されると、部分的な wake lock は「停止」します(アプリのどの部分もユーザーに表示されなくなります)。この状態ではデバイスが省電力状態にならないため、デバイスの電池が消耗します。部分的な wake lock は必要なときにのみ使用し、不要になったらすぐに解放する必要があります。
アプリで部分的な wake lock が停止している場合、このページのガイダンスが問題の診断と解決に役立ちます。
問題を検出する
アプリの部分的な wake lock が停止したことを常に把握できるとは限りません。アプリをすでに公開している場合は、Android Vitals が問題の発見に役立ちます。
Android Vitals
Android Vitals を使用すると、アプリで部分的な wake lock が停止しているときに、Google Play Console を介してアラートを受け取ることができます。これは、アプリのパフォーマンスを改善するために役立ちます。Android Vitals は、バックグラウンドでアプリが実行されているときに、24 時間以内に 1 時間に及ぶ部分的な wake lock が少なくとも 1 回発生すると、部分的な wake lock が停止したと報告します。
表示されるバッテリー セッション数は、アプリの測定対象ユーザー全員の集計値です。Google Play が Android Vitals のデータを収集する方法については、Play Console のドキュメントをご覧ください。
アプリが部分的な wake lock を停止していることがわかったら、問題に対処することが次のステップになります。
問題を解決する
ウェイクロックはデバイスのバッテリーを消耗させる可能性があるため、代替手段がある場合はウェイクロックを使用しないでください。デバイスをスリープ状態にしない適切な API を選択するのドキュメントを参照して、アプリに最適なソリューションを見つけてください。
どうしても wake lock を使用する必要がある場合は、wake lock のベスト プラクティスに従って、wake lock がデバイスの効率を損なわないようにしてください。特に、取得したすべてのデバイスが解放されていることを確認し、できるだけ早くロックを解除してください。
コードの問題を解決したら、ローカルの wake lock デバッグ ツールを使用して修正を確認できます。
関連ドキュメント
あなたへのおすすめ
このページのコンテンツやコードサンプルは、コンテンツ ライセンスに記載のライセンスに従います。Java および OpenJDK は Oracle および関連会社の商標または登録商標です。
最終更新日 2025-07-27 UTC。
[[["わかりやすい","easyToUnderstand","thumb-up"],["問題の解決に役立った","solvedMyProblem","thumb-up"],["その他","otherUp","thumb-up"]],[["必要な情報がない","missingTheInformationINeed","thumb-down"],["複雑すぎる / 手順が多すぎる","tooComplicatedTooManySteps","thumb-down"],["最新ではない","outOfDate","thumb-down"],["翻訳に関する問題","translationIssue","thumb-down"],["サンプル / コードに問題がある","samplesCodeIssue","thumb-down"],["その他","otherDown","thumb-down"]],["最終更新日 2025-07-27 UTC。"],[],[],null,["# Stuck partial wake locks\n\nPartial wake locks are a mechanism in the\n[`PowerManager`](/reference/android/os/PowerManager) API\nthat lets developers keep the CPU running after a device's display turns off\n(whether due to system timeout or the user pressing the power button). Your\napp acquires a partial wake lock by calling\n[`acquire()`](/reference/android/os/PowerManager.WakeLock#acquire())\nwith the\n[`PARTIAL_WAKE_LOCK`](/reference/android/os/PowerManager#PARTIAL_WAKE_LOCK)\nflag, or by using [other APIs that acquire wake locks](/develop/background-work/background-tasks/awake/wakelock/identify-wls).\nA partial wake lock becomes *stuck* if it is held for a long time while\nyour app is running in the\nbackground (no part of your app is visible to the user). This condition drains\nthe device's battery because it prevents the device from entering lower power\nstates. Partial wake locks should be used only when necessary and released as\nsoon as no longer needed.\n\nIf your app has a stuck partial wake lock, you can use the guidance in this page\nto diagnose and fix the problem.\n\nDetect the problem\n------------------\n\nYou may not always know that your app's partial wake locks are stuck.\nIf you have already published your app,\nAndroid vitals can help make you aware of the problem.\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\nexhibiting stuck partial wake locks. Android vitals reports partial wake locks\nas stuck when at least one, hour-long, while in the background, partial wake\nlock occurs in a 24-hour period.\n\nThe number of battery sessions displayed is an aggregate for all measured users\nof the app. For information on how Google Play collects Android vitals data, see\nthe\n[Play Console](https://support.google.com/googleplay/android-developer/answer/7385505)\ndocumentation.\n\nOnce you're aware that your app has stuck partial wake locks,\nyour next step is to address the issue.\n\nFix the problem\n---------------\n\nBecause wake locks can drain the device battery, you shouldn't use wake\nlocks if there's an alternative. The\n[Choose the right API to keep the device awake](/develop/background-work/background-tasks/awake)\ndocumentation can help you find the best solution for your app.\n\nIf you do need to use a wake lock, [follow wake lock best practices](/develop/background-work/background-tasks/awake/wakelock/best-practices)\nto make sure your wake locks don't hurt device efficiency. In particular,\nmake sure every device you acquire is released, and release the lock as quickly\nas possible.\n\nAfter fixing the problem in code, you can verify your fixes by using [local\nwake lock debugging tools](/develop/background-work/background-tasks/awake/wakelock/debug-locally).\n\nSee also\n--------\n\n- [Excessive partial wake locks (beta)](/topic/performance/vitals/excessive-wakelock)\n- [Wake lock documentation](/develop/background-work/background-tasks/awake/wakelock)\n\nRecommended for you\n-------------------\n\n- Note: link text is displayed when JavaScript is off\n- [Frozen frames](/topic/performance/vitals/render#frozen-frames)\n- [Run benchmarks in Continuous Integration](/topic/performance/benchmarking/benchmarking-in-ci)\n- [Create and measure Baseline Profiles without Macrobenchmark](/topic/performance/baselineprofiles/manually-create-measure)"]]