Если вам необходимо поддерживать работу устройства, чтобы завершить некоторую работу до того, как оно перейдет в состояние ожидания, вы можете использовать функцию системной службы PowerManager
, называемую блокировкой пробуждения . Блокировки пробуждения позволяют вашему приложению контролировать состояние питания устройства.
Установить блокировку пробуждения
Чтобы использовать блокировку пробуждения, первым делом нужно добавить разрешение WAKE_LOCK
в файл манифеста вашего приложения:
<uses-permission android:name="android.permission.WAKE_LOCK" />
Если ваше приложение включает в себя приемник широковещательного вещания, который использует службу для выполнения некоторой работы, вот как вы можете напрямую установить блокировку пробуждения:
Котлин
val wakeLock: PowerManager.WakeLock = (getSystemService(Context.POWER_SERVICE) as PowerManager).run { newWakeLock(PowerManager.PARTIAL_WAKE_LOCK, "MyApp::MyWakelockTag").apply { acquire() } }
Ява
PowerManager powerManager = (PowerManager) getSystemService(POWER_SERVICE); WakeLock wakeLock = powerManager.newWakeLock(PowerManager.PARTIAL_WAKE_LOCK, "MyApp::MyWakelockTag"); wakeLock.acquire();
Снимите блокировку пробуждения
Чтобы снять блокировку пробуждения, вызовите wakelock.release()
. При этом ваши претензии к процессору будут сняты. Важно снимать блокировку пробуждения сразу после завершения ее использования приложением, чтобы не разрядить батарею.