wake lock を解放する

このページでは、アプリが保持している wake lock を解放する方法について説明します。電池の消耗を防ぐには、アプリが wake lock を使い終わったらすぐに解放することが重要です。

アクティブな wake lock を解除する

アクティブな wake lock を解放するには、その release() メソッドを呼び出します。これにより、CPU に対する要求が取り下げられます。

たとえば、次のコードはウェイクロックを取得し、処理を実行してからウェイクロックを解除します。

Kotlin

@Throws(MyException::class)
fun doSomethingAndRelease() {
    wakeLock.apply {
        try {
            acquire()
            doTheWork()
        } finally {
            release()
        }
    }
}

Java

void doSomethingAndRelease() throws MyException {
    try {
        wakeLock.acquire();
        doTheWork();
    } finally {
        wakeLock.release();
    }
}

wake lock は不要になったらすぐに解放するようにしてください。たとえば、バックグラウンド タスクの終了を許可するために wake lock を使用している場合は、タスクが終了したらすぐにロックを解除してください。

このコードに関する主なポイント

この例では、メソッド doTheWork() が例外をスローする可能性があります。このため、コードは finally ブロックで wake lock を解放し、例外がスローされたかどうかにかかわらず、wake lock が確実に解放されるようにします。設定したすべての wake lock が解放されるようにすることが非常に重要です。そのため、考えられるすべてのコードパスをチェックし、どのパスでも wake lock がアクティブのままにならないようにする必要があります。

関連ドキュメント