Существует старое приложение для Android, в котором работает фоновая служба 2 (Service).
Потребовалось обновить приложение с возможностью отправки данных и логирования при работе не нового DozeMode. Прежде чем вносить изменения в текущий код, я решил проверить, как теперь все будет работать. Чтобы запустить приложение, в логах вижу, что оба сервиса запущены (основной смысл сервиса считывать положение устройства, второй сервис отправляет данные на сервер). Выключить экран командой
adb shell dumpsys deviceidle step
перевести систему в DozeMode:
Nikita:app NG$ adb shell dumpsys deviceidle step
Stepped to: ACTIVE
Nikita:app NG$ adb shell dumpsys deviceidle step
Stepped to: IDLE_PENDING
Nikita:app NG$ adb shell dumpsys deviceidle step
Stepped to: SENSING
Nikita:app NG$ adb shell dumpsys deviceidle step
Stepped to: LOCATING
Nikita:app NG$ adb shell dumpsys deviceidle step
Stepped to: IDLE
Если я все правильно понимаю - IDLE как раз тот самый режим, в котором по документации все сервисы, джобшедулеры, аларм-менеджеры и прочие фоновые компоненты должны быть выключены. Но этого не происходит. Судя по логам, приложение работает как надо и DozeMode либо я что-то не так делаю.
Подскажите, может быть есть какие-то лучшие практики по тестированию DozeMode и (поздней) перезаписи с Сервисами на более современные, если есть способы каких-то действий в фоновом режиме (т.е. при закрытии приложения).
Android 6, BlackView BV6000S, приложение отсутствует в списке разрешенных из-за неоптимального времени автономной работы (белый список)
UPD: Nikita:app NG$ adb shell dumpsys deviceidle force-idle
Приложение теперь принудительно переведено в режим ожидания и работает.
$ adb shell dumpsys deviceidle force-idle
для активации режима ожидания... - person Opiatefuchs   schedule 27.03.2017