Zwalnianie blokady uśpienia

Na tej stronie dowiesz się, jak zwolnić blokadę wybudzania utrzymywaną przez aplikację. Aby uniknąć wyczerpania baterii, ważne jest, aby zwolnić blokadę wybudzania, gdy aplikacja przestanie jej używać.

Zwalnianie aktywnej blokady uśpienia

Aby zwolnić aktywną blokadę wybudzania, wywołaj jej metodę release(). W ten sposób zwalniasz roszczenie do procesora.

Na przykład ten kod uzyskuje blokadę wybudzania, wykonuje pewne działania, a następnie zwalnia blokadę:

Kotlin

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

Java

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

Pamiętaj, aby zwalniać blokady wybudzania, gdy nie są już potrzebne. Jeśli na przykład używasz blokady uśpienia, aby umożliwić dokończenie zadania w tle, pamiętaj, aby zwolnić blokadę, gdy tylko zadanie zostanie wykonane.

Najważniejsze informacje o tym kodzie

  • W tym przykładzie metoda doTheWork() może zwrócić wyjątek. Dlatego kod zwalnia blokadę wybudzania w bloku finally, aby mieć pewność, że blokada wybudzania zostanie zwolniona niezależnie od tego, czy zostanie zgłoszony wyjątek. Bardzo ważne jest, aby każdy ustawiony blokadę wybudzania został zwolniony. Dlatego musisz sprawdzić wszystkie możliwe ścieżki kodu, aby upewnić się, że blokada wybudzania nie pozostanie aktywna na żadnej z nich.

  • Najlepiej jest uzyskać blokadę wybudzania za pomocą metody WakeLock.acquire(long timeout), która automatycznie zwalnia blokadę wybudzania po upływie określonego czasu oczekiwania. Nadal jednak musisz wyraźnie zwalniać blokadę, gdy nie jest już potrzebna, aby nie była utrzymywana dłużej niż to konieczne.

Zobacz również