Использование GPS с DOZE в Android 8
У меня есть приложение, которое запускает фоновый сервис для отслеживания местоположения GPS и сравнения его со списком местоположений. Когда он находит совпадение, он отправляет широковещательную рассылку, чтобы инициировать активность переднего плана, которая затем отображает информацию о местоположении. GPS-трекинг использует функцию GPS в Сервисах Google Play и должен получать обновления каждые 20 секунд.
Большую часть времени пользователь не знает о приложении и может делать другие вещи. Интерфейс переднего плана, вероятно, не будет срабатывать чаще, чем каждые 2 минуты, и может длиться до 20 минут и более. В остальное время важно, чтобы приложение продолжало получать GPS-местоположения, не прерывая то, что еще делает пользователь.
Я пытаюсь понять влияние новых функций Doze и Standby в Android 8. Из последних документов мне кажется, что он больше не будет работать, и фоновая служба не получит свои обновления (или получит только несколько каждый час, что бесполезно). Кто-нибудь может сказать мне, если это правильно?
Похоже, они говорят, что я должен использовать службу переднего плана, но в других местах они говорят, что службы переднего плана должны использоваться только там, где необходимо некоторое взаимодействие с пользователем. Похоже на улов 22. Служба переднего плана в порядке для чего-то вроде этого?
Документы также относятся к белым спискам, но мне не ясно, что это на самом деле делает. Могу ли я добавить в белый список свое приложение, чтобы оно продолжало работать?
Может ли кто-нибудь помочь смущенному разработчику-любителю?
Крис С
1 ответ
Теперь я понимаю это немного лучше. Я не нашел никакого способа сделать это с помощью фонового сервиса. Я попытался запросить разрешение REQUEST_IGNORE_BATTERY_OPTIMIZATIONS в манифесте, но оно все равно не сработало - отслеживание GPS прекращается через несколько минут. Чтобы сделать то, что я хочу, мне пришлось преобразовать отслеживание в службу переднего плана - это работает нормально.