Firebase JobDispatcher Запускается ли периодическая служба, когда экран выключен?

Я использую API-интерфейс распознавания активности и местоположение с помощью сервисов Google Play, и я знаю, как они потребляют заряд батареи, поэтому я был бы действительно рад, если бы это было так, и Служба заданий останавливается, когда включен экран, который ограничивает сбор данные, когда пользователь фактически использует свой телефон, а не 24/7.

Когда я пытался протестировать это, иногда оно останавливается через полчаса, иногда больше, а иногда это происходит сразу, поэтому связано ли это с другими фоновыми службами и текущими используемыми приложениями? и есть ли способ заставить службу останавливаться при выключенном экране?

Что касается кода, я использую точный образец, который я скачал из репозитория, и единственное изменение, которое я сделал, это вызов службы распознавания из службы заданий всякий раз, когда служба запускается (периодическая задача)




Ответы (1)


Если я правильно понимаю, у вас есть JobDispatcher, который неоднократно планирует запуск задания через фиксированное время. Если это так, то у вас есть возможность настроить выполнение задания только тогда, когда устройство находится в режиме ожидания или заряжается.

Это поведение можно задать с помощью объекта JobInfo, который передается методу JobScheduler.schedule(JobInfo job).

Вы можете просмотреть документацию по JobInfo для справки: https://developer.android.com/reference/android/app/job/JobInfo.html

person Hammad Khalid    schedule 02.03.2017
comment
Я знаю о состоянии зарядки, и это мне не помогает, потому что я хочу получить информацию о местоположении и активности пользователя, когда он находится в движении (требование зарядки ограничивает это), а что касается простоя, это означает, что служба будет работать только тогда, когда экран выключен, это не то, чего я хочу. Я хочу наоборот (служба перестает работать, когда устройство простаивает, чтобы уменьшить расход батареи.) - person student93; 02.03.2017
comment
Я хотел бы отметить, что я хочу сделать это, потому что большую часть времени телефоны простаивают, а не бодрствуют, поэтому я хочу уменьшить потребление, приостановив службу, когда устройство находится в режиме ожидания. - person student93; 02.03.2017