Подтвердить что ты не робот

Разница между Wakelock и FLAG_KEEP_SCREEN_ON?

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

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

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

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

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

4b9b3361

Ответ 1

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

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

Ответ 2

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 и другие ответы для точной реализации.

Ответ 3

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


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

Ура!