このページでは、アプリが保持している 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 がアクティブのままにならないようにする必要があります。