Использование GPS с DOZE в Android 8

У меня есть приложение, которое запускает фоновый сервис для отслеживания местоположения GPS и сравнения его со списком местоположений. Когда он находит совпадение, он отправляет широковещательную рассылку, чтобы инициировать активность переднего плана, которая затем отображает информацию о местоположении. GPS-трекинг использует функцию GPS в Сервисах Google Play и должен получать обновления каждые 20 секунд.

Большую часть времени пользователь не знает о приложении и может делать другие вещи. Интерфейс переднего плана, вероятно, не будет срабатывать чаще, чем каждые 2 минуты, и может длиться до 20 минут и более. В остальное время важно, чтобы приложение продолжало получать GPS-местоположения, не прерывая то, что еще делает пользователь.

Я пытаюсь понять влияние новых функций Doze и Standby в Android 8. Из последних документов мне кажется, что он больше не будет работать, и фоновая служба не получит свои обновления (или получит только несколько каждый час, что бесполезно). Кто-нибудь может сказать мне, если это правильно?

Похоже, они говорят, что я должен использовать службу переднего плана, но в других местах они говорят, что службы переднего плана должны использоваться только там, где необходимо некоторое взаимодействие с пользователем. Похоже на улов 22. Служба переднего плана в порядке для чего-то вроде этого?

Документы также относятся к белым спискам, но мне не ясно, что это на самом деле делает. Могу ли я добавить в белый список свое приложение, чтобы оно продолжало работать?

Может ли кто-нибудь помочь смущенному разработчику-любителю?

Крис С

1 ответ

Теперь я понимаю это немного лучше. Я не нашел никакого способа сделать это с помощью фонового сервиса. Я попытался запросить разрешение REQUEST_IGNORE_BATTERY_OPTIMIZATIONS в манифесте, но оно все равно не сработало - отслеживание GPS прекращается через несколько минут. Чтобы сделать то, что я хочу, мне пришлось преобразовать отслеживание в службу переднего плана - это работает нормально.

Другие вопросы по тегам