Разница между Wakelock и FLAG_KEEP_SCREEN_ON? - PullRequest
35 голосов
/ 07 декабря 2010

Сохранение экрана активным можно выполнить с помощью функции wakelock:

mWakeLock = mPowerManager.newWakeLock(PowerManager.SCREEN_BRIGHT_WAKE_LOCK, 
                getClass().getName());

или добавив FLAG_KEEP_SCREEN_ON в окно,

getWindow().addFlags(WindowManager.LayoutParams.FLAG_KEEP_SCREEN_ON);

В чем техническая разница между этими двумяа с точки зрения производительности и времени автономной работы что порекомендуете?

Ответы [ 3 ]

41 голосов
/ 07 декабря 2010

Wakelock дает вам больше контроля (например, пробуждение телефона для загрузки чего-либо без выключения экрана) и требует, чтобы ваше приложение удерживало разрешение Wakelock.

Поэтому FLAG_KEEP_SCREEN_ON рекомендуется, если вы хотитедержать экран включенным, пока ваше окно видно.

3 голосов
/ 29 ноября 2016

Wakelock расплывчато, поскольку у него много разных опций. Флаг FLAG_KEEP_SCREEN_ON только делает это.

| Flag Value              | CPU | Screen | Keyboard |
-----------------------------------------------------
| PARTIAL_WAKE_LOCK       | On* | Off    | Off      |
| SCREEN_DIM_WAKE_LOCK    | On  | Dim    | Off      |
| SCREEN_BRIGHT_WAKE_LOCK | On  | Bright | Off      |
| FULL_WAKE_LOCK          | On  | Bright | Bright   |

См. wakelock или PowerManager для Android, а также другие ответы для точной реализации.

0 голосов
/ 14 июля 2017

Wake lock используется в фоновых службах , чтобы поддерживать работу процессора, когда экран выключен. Вы никогда не должны использовать Wake заблокировать деятельность. Чтобы использовать wake lock, необходимо добавить разрешение WAKE_LOCK в файл манифеста приложения.


FLAG_KEEP_SCREEN_ON используется в занятии , чтобы держать экран включенным, что также будет держать процессор включенным без каких-либо специальных разрешение, в отличие от Wake Lock. Вы никогда не должны использовать FLAG_KEEP_SCREEN_ON в сервисе.

Ура!

...