Na tej stronie opisaliśmy, jak zwolnić blokadę aktywacji trzymaną przez aplikację. Aby uniknąć rozładowania baterii, ważne jest, aby zwolnić blokadę aktywacji, gdy aplikacja przestanie jej używać.
Zwolnij aktywną blokadę uśpienia
Aby zwolnić aktywną blokadę aktywacji, wywołaj metodę release()
. W ten sposób przekażesz roszczenie do CPU.
Na przykład ten kod uzyskiwanie blokady aktywacji, wykonuje pewne czynności, a następnie zwalnia blokadę aktywacji:
@Throws(MyException::class)
fun doSomethingAndRelease() {
wakeLock.apply {
try {
acquire()
doTheWork()
} finally {
release()
}
}
}
void doSomethingAndRelease() throws MyException {
try {
wakeLock.acquire();
doTheWork();
} finally {
wakeLock.release();
}
}
Odblokuj blokadę powiadomień, gdy już nie jest potrzebna. Jeśli na przykład używasz blokady uśpienia, aby umożliwić ukończenie zadania w tle, pamiętaj, aby zwolnić blokadę zaraz po zakończeniu zadania.
Najważniejsze informacje o tym kodzie
W tym przykładzie metoda doTheWork()
może wywołać wyjątek. Z tego powodu kod zwalnia blokadę aktywacji w bloku finally
, aby mieć pewność, że zostanie ona zwolniona niezależnie od tego, czy zostanie zgłoszone wyjątek. Bardzo ważne jest, aby każdy ustawiony przez Ciebie blokadę aktywacji został zwolniony. Musisz sprawdzić wszystkie możliwe ścieżki kodu, aby upewnić się, że blokada aktywacji nie jest aktywna na żadnej z nich.