デバイスがスリープ状態になる前に処理を完了させるためにデバイスを動作させ続ける必要がある場合は、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 を使い終わったらすぐに解放することが重要です。