Предисловие
В настоящее время становится все сложнее обеспечить выживание на Android, но Android предоставляет механизм блокировки пробуждения, который может гарантировать, что процессор никогда не перейдет в режим сна, но цена — высокое энергопотребление. Этот механизм в основном используется в некоторых особых сценариях, например, в музыкальных приложениях, воспроизводящих музыку в фоновом режиме, что требует использования блокировки пробуждения для обеспечения непрерывного воспроизведения. Поэтому обычным приложениям следует стараться избегать этого. Конечно, если мы разрабатываем собственные гаджеты или используем приложения внутри предприятия, мы все равно можем их использовать.
Давайте посмотрим, как использовать эту блокировку пробуждения.
Использовать блокировку пробуждения
Сначала вам нужно добавить разрешения в AndroidManifest.xml.
android.permission.WAKE_LOCK
Затем используйте PowerManagerService, чтобы создать блокировку пробуждения и включить ее. Код выглядит следующим образом:
val powerManager = getSystemService(Context.POWER_SERVICE) as PowerManager
wakeLock = powerManager.newWakeLock(PowerManager.PARTIAL_WAKE_LOCK, "$packageName:wake")
wakeLock?.acquire()
Таким образом, активируется блокировка пробуждения, и процессор остается в активном состоянии. Чтобы избежать ненужного энергопотребления, блокировку пробуждения необходимо снимать, когда она не нужна.
wakeLock?.release()
Метод получения WakeLock также поддерживает передачу тайм-аута, поэтому по истечении тайм-аута блокировка пробуждения будет автоматически снята, чтобы предотвратить невозможность снятия ситуации и потребление энергии.
wakeLock?.acquire(10 * 60 * 1000L)
Блокировка пробуждения автоматически отключится через десять минут.
уровень и флаг
Выше мы используем функцию newWakeLock PowerManagerService для создания блокировки пробуждения. Эта функция имеет два параметра. Второй параметр — это тег, который идентифицирует блокировку пробуждения и представляет собой пользовательскую строку; первый параметр — levelAndFlags, что очень важно. сосредоточиться на
level
Существует четыре уровня:
Только один из этих четырех уровней может существовать и являются взаимоисключающими.
Это включает в себя процесс спящего режима устройств Android. Если оно не используется в течение длительного времени, сначала экран тускнеет, затем через некоторое время экран выключается, а затем через некоторое время отключается процессор.
Поэтому, когда выше упоминается, что при включении экрана будет конкретно указано, включает ли оно затемнение экрана. Например, SCREEN_BRIGHT_WAKE_LOCK снимет блокировку пробуждения, когда экран погаснет.
flag
Есть два флага:
Флаги здесь не являются взаимоисключающими и могут быть установлены одновременно.
Таким образом, параметр levelAndFlags может быть отдельным уровнем, например «PowerManager.PARTIAL_WAKE_LOCK»;
Он также может быть в форме «уровень | флаг», например «PARTIAL_WAKE_LOCK | ON_AFTER_RELEASE»;
Он также может быть в форме «уровень | флаг1 | флаг2», например «PARTIAL_WAKE_LOCK | ON_AFTER_RELEASE | ON_AFTER_RELEASE».
Подвести итог
Наконец, я все же хочу напомнить всем, что Использовать блокировку пробуждения Обязательно выпустите,В противном случае время ожидания мобильного телефона сократится. Также не злоупотребляйте этим механизмом.,Особенно теперь система Android будет предлагать пользователям использовать приложения с высоким энергопотреблением.,Это принесет очень плохой опыт пользователям.