Разница между 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);
Какая техническая разница между двумя и с точки зрения производительности и времени автономной работы, которая рекомендуется?
Ответы
Ответ 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 в службе.
Ура!