Установить планировщик заданий при включенном экране (устройство НЕ находится в режиме ожидания)?

Я знаю что метод setRequiresDeviceIdle(boolean requiresDeviceIdle) заставляет задание запускаться, когда устройство находится в режиме ожидания.

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

1 ответ

Это невозможно через JobScheduler, Если вы хотите, чтобы поведение триггера основывалось на включении экрана, вы должны постоянно работать (скорее всего, в качестве службы переднего плана) и программно регистрировать BroadcastReceiver слушая ACTION_SCREEN_ON,

Очевидно, что это требует большого объема памяти и является ужасной идеей для общего состояния системы, поэтому она не поддерживается JobScheduler (не говоря уже о значительном давлении памяти, уже присутствующем во время ACTION_SCREEN_ON из-за того, что это было одним из условий выхода из легкой дозы Android 7.0).