wake lock の設定と管理

デバイスがスリープ状態になる前に処理を完了させるためにデバイスを動作させ続ける必要がある場合は、wake lock と呼ばれる PowerManager システム サービス機能を使用できます。wake lock を使用すると、アプリでデバイスの電力状態を管理できます。

wake lock を設定する

wake lock を使用するには、まず、WAKE_LOCK 権限をアプリのマニフェスト ファイルに追加します。

<uses-permission android:name="android.permission.WAKE_LOCK" />

サービスを利用してなんらかの処理を行うブロードキャスト レシーバがアプリに含まれている場合は、wake lock を直接設定します。以下にその方法を示します。

Kotlin

val wakeLock: PowerManager.WakeLock =
        (getSystemService(Context.POWER_SERVICE) as PowerManager).run {
            newWakeLock(PowerManager.PARTIAL_WAKE_LOCK, "MyApp::MyWakelockTag").apply {
                acquire()
            }
        }

Java

PowerManager powerManager = (PowerManager) getSystemService(POWER_SERVICE);
WakeLock wakeLock = powerManager.newWakeLock(PowerManager.PARTIAL_WAKE_LOCK,
        "MyApp::MyWakelockTag");
wakeLock.acquire();

wake lock を解放する

ウェイクロックを解除するには、wakelock.release() を呼び出します。これにより、CPU に対する要求が取り下げられます。電池の消耗を防ぐには、アプリが wake lock を使い終わったらすぐに解放することが重要です。

関連ドキュメント