Как установить блокировку пробуждения

Вы можете установить блокировку пробуждения, чтобы устройство временно не переходило в спящий режим.

Связанные запросы

Чтобы устанавливать блокировку пробуждения, приложению требуется разрешение WAKE_LOCK. Добавьте разрешение в манифест приложения:

<uses-permission android:name="android.permission.WAKE_LOCK" />

Как создать и получить блокировку пробуждения

Чтобы получить блокировку пробуждения, выполните следующие действия:

  1. Вызовите PowerManager.newWakeLock(), чтобы создать блокировку пробуждения. Этот код создает и настраивает объект PowerManager.WakeLock, но не предотвращает переход устройства в спящий режим.

  2. Чтобы устройство не переходило в спящий режим, вызовите метод acquire() объекта запрета блокировки.

Например, если в вашем приложении есть приемник широковещательных передач, который использует службу для выполнения каких-либо действий, вы можете использовать следующий код, чтобы установить и получить блокировку пробуждения:

Kotlin

val wakeLock: PowerManager.WakeLock =
    (getSystemService(POWER_SERVICE) as PowerManager).run {
        newWakeLock(PowerManager.PARTIAL_WAKE_LOCK, "MyClassName::MyWakelockTag").apply {
            acquire(WAKELOCK_TIMEOUT)
        }
    }

Java

PowerManager powerManager = (PowerManager) getSystemService(POWER_SERVICE);
PowerManager.WakeLock wakeLock =
        powerManager.newWakeLock(PowerManager.PARTIAL_WAKE_LOCK, "MyClassName::MyWakelockTag");
wakeLock.acquire(WAKELOCK_TIMEOUT);

Важная информация об этом коде

  • Когда код создает объект блокировки пробуждения, он использует название класса как часть тега блокировки пробуждения. Рекомендуем включить в тег блокировки пробуждения название пакета, класса или метода. Так вам будет проще найти блокировку пробуждения в исходном коде, если возникнет ошибка. Подробнее о том, как правильно назвать блокировку пробуждения…

  • Функции WakeLock.acquire(long) передается значение времени ожидания в миллисекундах. Система снимает блокировку пробуждения по истечении этого времени, если вы не сделали этого раньше.

Дополнительная информация